我有一个在Visual Studio 2012下开发的ASP.NET Web Forms网站。有一个带有导航栏和链接到CSS表格的主页面。 Bot是使用应用程序根操作符“〜”指定的
<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我发现“〜”在这些情况下的parsing方式不同:
<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的path是绝对的,其他页面的path是相对的。 在本地主机上运行时,一切正常。 但是在将我的站点部署到服务器之后,它具有地址http://MyDomain/MySite/ ,因此它不在域根目录中。 而由于绝对path,没有CSS文件可以加载! 导航工作正常,但所有的风格都毁了。
为什么“〜”操作符不能在Styles.Render指令中工作? 这两个代码片段都是由标准的ASP.NET网站模板生成的,我没有修改任何东西。
网站是在Visual Studio 2012,.NET Framework 4.5下开发的。 我的服务器规格是:
问题是由我们的代理服务器引起的,他们实际上将http://MyDomain/MySite/转发给http://InternalDomain:InternalPort/ 。 而对于内部域的应用程序根目录实际上是一个网站的根。