2

global.asax の Application_Start メソッドに次の行を追加しました。

var provider = new TestVirtualPathProvider();
HostingEnvironment.RegisterVirtualPathProvider(provider);

ただし、このアプリケーションを IIS6 にデプロイする場合、'TestVirtualPathProvider' は使用されません (ASP.NET 開発サーバーでは使用されます)。

編集: デフォルトのパス プロバイダーは、常にその仕事を正しく行い、(埋め込まれていない) ビューを正しく提供してきました。問題は、独自のパス プロバイダーを使用して埋め込みビューを提供したいということです。したがって、最初は、次のワイルドカード マッピングが既に構成されていました。

使用されたワイルドカード マッピングのスクリーンショット

これが IIS6 で機能しない理由として考えられるものはありますか? 使用されている VirtualPathProvider に影響を与える可能性のある他の要因 (ハンドラーなど) はありますか?

4

4 に答える 4

1

更新: 拡張子のない URL を処理したいという事実は、質問には記載されていない重要なポイントです。IIS 6 で MVC をセットアップする方法については、このページを参照してください: http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx。これはあなたのシナリオもカバーするはずです。


おそらく、このスレッドで回答したのと同じ問題です: http://forums.asp.net/t/995633.aspx

基本的に、これを web.config に追加します。

<httpHandlers>
  <add path="*" verb="GET,HEAD,POST" type="System.Web.StaticFileHandler" validate="true" />
</httpHandlers>

その他のスレッドには、これが必要な理由を説明する詳細があります。

于 2010-09-02T00:53:24.803 に答える
1

カスタム VPP + IIS6 + プリコンパイル済みサイトの組み合わせの場合、AppInitailize() から VPP を追加する必要があります。

public static class AppStart
{
    public static void AppInitialize()
    {
    // code to be executed automatically by the framework
    }
}

以下も参照してください。

http://sunali.com/2008/01/09/virtualpathprovider-in-precompiled-web-sites/

于 2011-03-03T09:44:04.467 に答える
0

拡張子のない URL をインターセプトするには、IIS6 で ISAPI フィルターを使用する必要があると思います。問題は、ISAPI を c/c++ で実行する必要があることです。

于 2010-09-03T02:44:08.910 に答える
0

IIS6 は、ASP.net パイプラインによって特定の拡張機能のみが処理されるように構成されています。リクエストをリダイレクトする方法については、 DocVの投稿をご覧ください。

于 2010-09-06T18:53:27.750 に答える