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/
. 明らかに、チルダ演算子~
は正しく処理されません。href などの他のすべての場所では、適切に置き換えられ、展開されたサイトでナビゲーションが正常に機能します。
もう一つの例。マスターページからのこのコードについて
<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
- IIS7.5
- ASP.NET アプリケーション ターゲット フレームワーク 4.5
- IIS アプリケーション プール フレームワーク 4.0