asp.net - 为什么 Asp.net mvc 应用程序不能在 Asp.Net Classic 应用程序池上运行?

标签 asp.net asp.net-mvc asp.net-mvc-2 iis application-pool

我在 .Net 4.0 上的 IIS 7.5 上部署了一个 Asp.Net MVC 2 Web 应用程序。当我选择应用程序池作为 Asp.Net v4.0 Classic 时,出现以下错误。

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

当我选择应用程序池作为Asp.Net v4.0 Integrated时,同一应用程序工作正常。有谁知道这是什么原因吗?

更新:我按照以下网址中的步骤操作。

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 = "" }

现在以下网址工作正常,我可以看到主页/索引页面。

http://myapp/home.mvc

但这仍然给出相同的错误(HTTP 错误 403.14 - 禁止)

http://myapp/

自从我将根映射到 Home/Index 操作后,这应该有效。

更新

这是在 Win 7 Ultimate Turbo Gold Premium 64 位系统上的 IIS 7.5 上进行的。应用程序池以集成模式运行。当我切换到经典时,一切都按照广告进行。如果我在经典模式下运行我的应用程序,则会像应有的那样授予公共(public)访问权限。所以问题是:如果我愿意,如何在集成模式下运行它?

最佳答案

在经典模式下,您需要执行通配符映射或在 URI 中的 Controller 名称上使用“.mvc”扩展名。因此,您必须将 IIS ASP.NET 配置中的 *.mvc 映射更改为 . 或将默认路由更改为:

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

这些方法确实有效;事实上,这是支持 IIS 5-6 的唯一方法。另一方面,对于 IIS 7,我只使用集成模式。

关于asp.net - 为什么 Asp.net mvc 应用程序不能在 Asp.Net Classic 应用程序池上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3070530/

相关文章:

asp.net - 多个 bool 的单选按钮

asp.net-mvc-2 - 如何在 ASP.NET MVC 2 中使用 DataType.Custom?

visual-studio-2010 - ASP.NET MVC 添加 View 对话框关闭

sql-server-2008 - Entity Framework 中的 datetime2 和 ProviderManifestToken

c# - 生成mysql表主键字符串+数字的最佳方式

c# - (http) coreclr/dnxCore 中的 Web 请求提供程序?

asp.net - 从我的模型类中捕获异常的最佳方法

c# - 使用 WCF 更新现有的 asp.net 项目

c# - "The parameters dictionary contains a null entry..."错误

c# - 我是否应该测试我的 Controller 的 Action 方法是否正在调用存储库方法并生成正确的 View ?