2

ASP.NET MVC 4のバンドルとミニファイ機能を使用したいのですが、デバッグモードを実行しているため、何もバンドルされていないと想定してください。ただし、各参照は単純に単一のタグにレンダリングされます。ローカルではすべてが正常に機能します。

 public static void RegisterBundles(BundleCollection bundles)
 {
      bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                  "~/Scripts/jquery-{version}.js"));
 }

@Scripts.Render("~/bundles/jquery")ビューから今すぐ呼び出すと、次のようなタグが生成されます。

 <script src="/Scripts/jquery-1.8.2.js"></script>

次のように書くだけでも結果は同じです。

 <script src="@Url.Content("~/Scripts/jquery-1.8.2.js")"></script>

しかし、すべてをインターネットのテストサーバーに展開すると(引き続きデバッグモードを使用)、特定のドメインまたはサブドメインを特定のフォルダーにルーティングするURL書き換えが有効になります。

たとえば、ドメインがsub1.example.com転送さexample.com/__sub1__れる場合、sub2.example.com転送先の場合などですexample.com/__sub2__。ブラウザで開いsub1.example.comたとき、通常、この転送が発生する手がかりはなく、URLは変更されず、すべてのURLが機能し続け、Url.Content(...)メソッドを使用して生成された参照も機能します。

しかし、奇妙な理由で、を呼び出すと次の@Scripts.Render("~/bundles/jquery")ようになります。

 <script src="/__sub1__/Scripts/jquery-1.8.2.js"></script>

「/ sub1」の部分は生成されるべきではなく、レンダリングされたhtmlコードのどこにも表示されない部分であり、URLの書き換えが失敗するため404につながることに注意してください。

その間...

<script src="@Url.Content("~/Scripts/jquery-1.8.2.js")"></script>

...それでも「/Scripts/jquery-1.8.2.js」への正しい相対パスをレンダリングします。そして、私はこのようなURLを書き直すことに他の問題を抱えたことはありません。そして、私はこの書き直しを取り除きたくありません。

明らかに、同じことがスタイルシートにも当てはまります。

私が試すことができるアイデアはありますか?

4

1 に答える 1

1

これは、スクリプト/スタイルヘルパーの現在の実装のバグです。これは、ASP.NETに登録されたVirtualPathProviderの使用のサポートによってこの一般的な問題が修正されたため、まもなく(10月初旬)利用可能になる1.1-alpha1リリースで修正される必要があります。問題のクラス(リソースパスを正しく解決する)。

于 2012-09-28T18:23:16.443 に答える