我从 Visual Studio 2012 中的 Web 窗体模板生成了我的 ASP.NET 站点。我在母版页中有以下代码:
<asp:PlaceHolder runat="server">
<%: Styles.Render("~/Content/themes/base/css", "~/Content/css") %>
<%: Scripts.Render("~/bundles/modernizr") %>
</asp:PlaceHolder>
当我从 VS 运行我的网站时,一切正常。当我将它部署到服务器时,无法加载 css 文件,因为上面的代码解析为
<link href="/Content/themes/base/css?v=UM624qf1uFt8dYtiIV9PCmYhsyeewBIwY4Ob0i8OdW81" rel="stylesheet" type="text/css" />
<link href="/Content/css?v=tMLDfv3u-lElLSOX_gsfU7tfsfKPoY_vJBePC7KLa6U1" rel="stylesheet" type="text/css" />
<script src="/bundles/modernizr?v=EuTZa4MRY0ZqCYpBXj_MhJfFJU2QBDf0xGrV_p1fHME1" type="text/javascript"></script>
所有路径都从域的根目录开始计算,而我的站点部署在子文件夹下,例如http://MyDomain.com/MySyte/
. 显然,波浪号运算符~
处理不当。在所有其他地方,例如 hrefs,它已被正确替换,并且导航在已部署的站点中工作正常。
另一个例子。对于来自母版页的此代码
<asp:ScriptManager runat="server" AjaxFrameworkMode="Explicit">
<Scripts>
<asp:ScriptReference Name="MsAjaxBundle" />
<asp:ScriptReference Name="jquery" />
...
</Scripts>
</asp:ScriptManager>
我有这个 html 输出
<script src="/bundles/MsAjaxJs?v=eYkLZimNY09iWQvWpdPDkxCLGwdMBLWkJ4bU5r3y6GU1" type="text/javascript"></script>
<script src="Scripts/jquery-1.6.2.min.js" type="text/javascript"></script>
所以 jquery 的路径是正确的和相对的,而 MsAjaxBundle 导致了一些绝对路径。
我认为这种行为是一个错误。我该如何解决?
更新:
- 视窗 7 x64
- IIS 7.5
- ASP.NET 应用程序目标框架 4.5
- IIS 应用程序池框架 4.0