【问题标题】:Why application root “~” resolves to site root “/” in ASP.NET?为什么应用程序根“~”在 ASP.NET 中解析为站点根“/”?
【发布时间】:2012-08-21 09:14:17
【问题描述】:

我有一个在 Visual Studio 2012 下开发的 ASP.NET Web 窗体站点。有一个带有导航栏和指向 CSS 表的链接的母版页。使用application root 运算符“~”

指定机器人
<asp:PlaceHolder runat="server">
    <%: Styles.Render("~/Content/themes/base/css", "~/Content/css") %>
</asp:PlaceHolder>
...
<li><a runat="server" href="~/Forms/SelectResults.aspx">Generate Table</a></li>
<li><a runat="server" href="~/BrowseDB.aspx">Browse DB</a></li>

在浏览页面http://localhost/Forms/SelectResults.aspx 时,我发现“~”在这些情况下的解析方式不同:

<link href="/Content/site.css" rel="stylesheet" type="text/css" />
...
<li><a href="SelectResults.aspx">Generate Table</a></li>
<li><a href="../BrowseDB.aspx">Browse DB</a></li>

所以 CSS 的路径是绝对的,而其他页面的路径是相对的。在本地主机上运行时,一切正常。但是在将我的站点部署到服务器后,它的地址为http://MyDomain/MySite/,因此它不在域根目录中。并且由于绝对路径,无法加载任何 CSS 文件!导航工作正常,但所有样式都毁了。

为什么“~”运算符在Styles.Render 指令中不起作用?两个代码 sn-ps 都是由标准的 ASP.NET 网站模板生成的,我没有修改任何东西。

网站是在 Visual Studio 2012、.NET Framework 4.5 下开发的。我的服务器规格是:

  • Windows 7 x64
  • IIS 7.5
  • 网站应用程序池框架 4.0

【问题讨论】:

    标签: asp.net iis relative-path visual-studio-2012 virtual-path


    【解决方案1】:

    问题是由我们的代理服务器引起的,它实际上将http://MyDomain/MySite/ 转发到http://InternalDomain:InternalPort/。而对于那个内部域应用程序根实际上是一个站点根。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-24
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 2016-02-21
      • 1970-01-01
      • 2020-11-27
      • 2016-04-30
      相关资源
      最近更新 更多