2

Asp.Net MVC2Webアプリケーションを.Net4.0のIIS7.5に展開しています。アプリケーションプールをAsp.Netv4.0Classicとして選択すると、次のエラーが発生します。

HTTP Error 403.14 - Forbidden
The Web server is configured to not list the contents of this directory.

Asp.Net v4.0 Integratedとしてアプリケーションプールを選択すると、同じアプリケーションが正常に機能します。誰かがこれの理由を知っていますか?

更新:次のURLの手順に従いました。

http://www.asp.net/mvc/tutorials/using-asp-net-mvc-with-different-versions-of-iis-cs

.mvc拡張子のマップを追加し、以下に示すようにルーティングも変更しました。

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default", // Route name
                "{controller}.mvc/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );


            routes.MapRoute(
                    "Root",
                    "",
            new { controller = "Home", action = "Index", id = "" }

これで、次のURLが正常に機能し、ホームページ/インデックスページが表示されます。

http://myapp/home.mvc

しかし、これでも同じエラーが発生します(HTTPエラー403.14-禁止)

http://myapp/

ルートをホーム/インデックスアクションにマッピングしたので、これは機能するはずです。

アップデート

これは、Win 7 Ultimate Turbo GoldPremium64ビットシステムのIIS7.5にあります。アプリプールは統合モードで実行されていました。クラシックに切り替えると、すべてが宣伝どおりに機能します。アプリをクラシックモードで実行すると、パブリックアクセスが許可されます。だからここに質問があります:必要に応じてこれを統合モードで実行するにはどうすればよいですか?

4

3 に答える 3

5

クラシックモードでは、ワイルドカードマッピングを実行するか、URIのコントローラー名に「.mvc」拡張子を使用する必要があります。したがって、IISASP.NET構成の*.mvcマッピングをに変更する必要がありますまたは、デフォルトルートを次のようなものに変更します。

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}.mvc/{action}/{id}",                       // URL with parameters
            new { controller = "Home", action = "Index", id = "" }, // Parameter defaults
            null
        );

これらの方法は確かに機能します。実際、IIS5-6をサポートする唯一の方法です。一方、IIS 7では、統合モードを使用します。

于 2010-06-18T14:42:32.460 に答える
2

統合とは、IIS統合パイプラインモードを指します:http://msdn.microsoft.com/en-us/magazine/cc135973.aspx

統合パイプラインモードがオフの場合、入力しているURLの要求はASP.NETにルーティングされません。さらに、アクセスしているフォルダーにはdefault.aspxまたは同様の「デフォルトのドキュメント」がないため、IISはデフォルトでディレクトリの内容を一覧表示しようとします。デフォルトでは、この設定はIISで無効になっているため、403.13Forbiddenエラーが発生します。

于 2010-06-18T14:44:56.190 に答える
1

これは、ルーティングがクラシックモードでは機能しないためです。ネット上にはいくつかの回避策がありますが、それらのほとんどはあまりうまく機能していません。

このトピックに関する説明とヘルプは次のとおりです 。http ://www.asp.net/mvc/tutorials/using-asp-net-mvc-with-different-versions-of-iis-cs

統合を使用したくない理由はありますか?

于 2010-06-18T14:41:40.217 に答える