8

Windows7でIIS7.5を実行しています。ASP.NETアプリケーションはVirtualPathProviderを使用しています。ほとんどのファイル(aspxページ)は、VirtualPathProviderによって返され、正常にレンダリングされます。静的ファイル(css / images)はそうではありません。それらを直接参照しようとすると(または仮想aspxページによって参照されている場合)、HTTP404エラーが発生します。

web.configに静的ファイルタイプ用に登録された正しいハンドラーがあることを確認しました。

奇妙なのはこれです:

  1. 非仮想gifファイル(Webサイトのルートの下のファイルシステムに実際に存在するファイル)を参照しようとすると、正常にレンダリングされます。

  2. IISの代わりにVisualStudioでWebDevを使用して実行すると、仮想gifファイルは正常にレンダリングされます。

  3. デバッグモードでは、でVirtualPathProvider.GetFile、ページが404エラーを返す直前にVirtualPathProviderが仮想gifファイルの完全に有効なインスタンスを返すのを見ることができます...したがって、VirtualPathProviderは正常に機能していることがわかります。

注:IISと言うときは、デプロイされた環境を意味するものではありません。WebDevの代わりにIISを使用するようにプロジェクト設定を切り替えることを意味します。

何か案は?

ありがとう。

4

1 に答える 1

11

...そして答え

特にルーティングが表示されるときに遭遇した問題は、ASP.NETへのワイルドカードマップを使用しても、ルーティングがそれらをキャッチしてMVCに要求を送信するため、静的ファイルが404エラーコードで終わることです。ハンドラーであり、ルートが見つかりません。失敗。

ですから、私自身(および同様のことをしている他の人)へのメモとして、VPPに静的ファイルを提供させるためにあなたがしなければならないことがわかりました。

まず、ASP.NETにマップされた目的の静的ファイルタイプを取得する必要があります...

于 2011-08-09T17:17:37.927 に答える