【发布时间】:2018-10-08 17:39:38
【问题描述】:
尝试我的第一个“HELLO WORLD”类型的网络应用程序,该应用程序基于显示 Godaddy 设置的示例程序。
使用 Visual Studio 2017 和 C#。我的程序在localhost/xxxxx 上构建和运行得很好,但是当我尝试发布它时失败了。错误说
解析器错误消息:文件“/Site.Master”不存在
谷歌搜索我读到了使用“./”而不是 VS2017 创建的内容的建议:
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="BoincStats._Default" %>
所以我把那个波浪号改成了一个点,我不仅得到一个新的错误
BoincStats.SiteMaster 未找到
但我也发现它不再在我的 Windows-10-x64 系统上运行,除非我将“~/”放回原处。
同样的谷歌搜索建议用 CodeFile 替换 CodeBehind,它甚至未能发布。
首先,我想知道这些功能之间的区别以及何时使用它们。
在 Ubuntu 中,我执行了 mkdir "~/vnc",它在我的根目录中创建了一个名为 vnc 的隐藏目录。查看远程网站 (godaddy) 和我的本地驱动器,我没有看到任何目录“Site.Master”,只有一个位于安装它的“JTest”中的文件。
【问题讨论】:
-
您还应该使用
asp.net或asp.net-core标记此问题,具体取决于您使用的是哪一个。既然你提到了 Ubuntu,我就假设 Core,并且~对操作系统的含义与 ASP.NET(任何版本)对它的解释方式非常不同。 -
在 ASP.NET 中,波浪号是站点根目录的简写。这样,在
https://localhost上调试或部署到https://foo.com时,您无需更改任何内容。 -
.是 web url 路由但是如果你有一个子目录不会认为这也是一样的,但是如果你的网站是 www.goo.com/sysadmin/ 换句话说你有不同的www.goo.com/ 和 www.goo.com/sysadmin/ 的应用程序,那么我相信如果您部署在 sysadmin 中并且您使用.它会将您导航到 www.goo.com/ 而不是 www.goo。 com/sysadmin/ 我认为它主要适用于子目录托管。我可能是错的,但这是我的理解。
标签: c# asp.net webforms master-pages