1

NuGetパッケージ(GitHubから直接コンパイルしています)を使用して、N2でWebサイトを構築しています。/ N2フォルダー内の管理インターフェイスを構成するファイルはすべてN2.zipにコンパイルされ、zipファイルから/N2フォルダー内のすべてのものを提供するように構成された仮想パスプロバイダーがあります。

私の開発マシンでは、完全に機能します。Webサーバー(IIS6またはIIS7.5を実行している)に展開すると、/N2フォルダー内のファイルの要求は404で返されます。奇妙な例外があります。クエリ文字列値を持つ要求が処理されます。たとえば、/N2/Login.aspx?ReturnUrl=%2fn2機能しますが、/N2/Resources/Css/All.css機能しません。(私はFiddler 2を使用してリクエストを監視しています。)

これはMVCサイトであり、.Net 4.0で実行されており、プリコンパイルされていません。

web.configでASP.Netトレースをオンにしたところ、VPPがで始まるトレース行を書き込むため、VPPが実行されていることがわかります。ZipVPP:

ZipVPP: False ~/default.cshtml      
ZipVPP: False ~/default.vbhtml  4.79004203405183E-05    0.000048
ZipVPP: False ~/index.cshtml    9.07992130999052E-05    0.000043
ZipVPP: False ~/index.vbhtml    0.000125475536747951    0.000035
ZipVPP: False /Views/Home/Index.aspx    0.000476485344693378    0.000351
ZipVPP: False /Views/Home/Index.ascx    0.000554325119945653    0.000078
ZipVPP: False /Views/Shared/Index.aspx  0.000631632393110378    0.000077
ZipVPP: False /Views/Shared/Index.ascx  0.000704500969472239    0.000073
ZipVPP: False ~/Views/Home/_ViewStart.cshtml    0.000794229163423298    0.000090
ZipVPP: False ~/Views/Home/_ViewStart.vbhtml    0.000833389826910285    0.000039
ZipVPP: True ~/Views/_ViewStart.cshtml  0.000872745800133037    0.000039
ZipVPP: False ~/_ViewStart.cshtml   0.000935947959862434    0.000063
ZipVPP: False ~/_ViewStart.vbhtml   0.000972131211344948    0.000036
ZipVPP: True ~/Views/Shared/_Layout.cshtml  0.00102791407786914 0.000056
ZipVPP: False /Views/Home/LayoutPartials/Rotator.aspx   0.00113080303437734 0.000103

これは、VPPのバグである可能性があることを示唆していますが、よくわかりません。

4

1 に答える 1

0

修正は、イメージ、CSS、スクリプトなどを含むすべての要求が ASP.Net を通過するように、IIS 6 をワイルドカード ルーティング用に構成することでした。これにより、仮想パス プロバイダーにチャンスが与えられます。ワイルドカード ルーティングを使用しない場合、IIS はファイル拡張子を調べます。通常は や のような静的なファイル タイプの.jpg場合.cssは、ファイル システムでファイルを探すだけです。ファイルが存在しないため、404 が返されます。

これを構成するには、 Web サーバーで N2CMS 仮想パス プロバイダーが失敗する を参照してください。aspnet_isapi.dll必要な .Net バージョンに対応するようにパスを調整し、 「ファイルが存在することを確認する」のチェックを外します。

于 2012-08-29T18:08:11.000 に答える