3

MVC 4 プロジェクトを IIS 7 に展開しようとしています。

ユーザーが既存のサイトを引き続き使用できるように、プロジェクトを Web サイト内のアプリケーションにする必要がありますが、既存の URL に /mySite を追加することでアクセスできます。

Web サイトでアプリケーションとして作成すると、自分のサイトにアクセスできますが、すべてのバンドルが壊れています。

ソースを表示すると、バンドルに値がないため、スクリプトの src は次のようになります。

"/mySite/Scripts/validation?v="

アプリケーションがアプリケーションではなく別の Web サイトとして公開されている場合、アプリケーションは正常に機能し、バンドルには価値があります。

"/Scripts/validation?v=-_ZaBIp4vfIoajyi-JkBIsoCXRGuEGptU4ZUpHA6c8U1"

以下は、バンドル構成でバンドルを定義する方法です。

        var validationBundle = new ScriptBundle("~/Scripts/validation")
            .Include("~" + Links.Scripts.jquery_validate_js)
            .Include("~" + Links.Scripts.jquery_validate_unobtrusive_js);

親 Web サイトのアプリ プールを確認しましたが、これは .NET 4 に設定されています

私は途方に暮れており、オンラインで他に何も見つけることができないので、どんな提案も歓迎します。

ありがとう

答え

典型的には、別のスタックオーバーフローの質問で答えを見つけることになりましたが、それは再び失われたため、リンクはありません。

問題は T4MVC の使用にありました。これにより、アプリケーションとして公開されている MVC プロジェクトまたは仮想ディレクトリに誤ったパスが生成されます。

Web サイトとして公開している場合は、パスが正しいため、引き続き T4MVC を使用できます。

4

2 に答える 2

2
 <system.webServer>
   <modules runAllManagedModulesForAllRequests="true"/> 
 </system.webServer>

このweb.configファイルの変更は、私にとってはうまくいきました。

于 2013-05-27T13:11:42.670 に答える
0

次のように、 VirtualPathUtility.ToAppRelativeを使用して、IIS でアプリケーション相対パスを作成します。

  var validationBundle = new ScriptBundle("~/Scripts/validation")
        .Include(VirtualPathUtility.ToAppRelative(Links.Scripts.jquery_validate_js))
        .Include(VirtualPathUtility.ToAppRelative(Links.Scripts.jquery_validate_unobtrusive_js));

この質問を参照してください: Unable to generate 'VersionQueryString' in Scripts.Render when using bundle

于 2014-09-30T13:02:18.003 に答える