gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:19:10 27 4
gpt4 key购买 nike

我在 .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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com