为什么Asp.net mvc应用程序不能在Asp.Net Classic应用程序池上工作?
我在.Net 4.0上的IIS 7.5上部署了一个Asp.Net MVC 2 Web应用程序。当我选择应用程序池为Asp.Net v4.0经典我收到以下错误。当我选择的应用程序池Asp.Net 4.0版集成为什么Asp.net mvc应用程序不能在Asp.Net Classic应用程序池上工作?
HTTP Error 403.14 - Forbidden
The Web server is configured to not list the contents of this directory.
同一应用程序工作正常。有谁知道这是什么原因?
更新:我遵循以下网址的步骤。
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/
,因为我已经映射根首页/ Index操作这应该有工作。
更新
这是IIS 7.5的Win 7旗舰版的Turbo黄金高级版64位系统上。应用程序池以集成模式运行。当我切换到经典之作时,所有的东西都像广告一样运作如果我在经典模式下运行我的应用程序,公共访问权限应该如此。所以这里是一个问题:如果我想如何在集成模式下运行它?
在经典模式下,您需要执行通配符映射或在URI中的控制器名称上使用“.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中,我只是使用集成模式。
这是因为路由在传统模式下不起作用。在网络上有一些解决方法,但其中大多数不能很好地工作。
下面是一些解释和有关这个主题的帮助: http://www.asp.net/mvc/tutorials/using-asp-net-mvc-with-different-versions-of-iis-cs
你不要任何理由要使用集成?
要清楚:Routing * does *工作,如果它被调用。诀窍是让ASP.NET进入图片* * System.Web.Routing本身工作正常。 – 2010-06-18 14:55:03
我的开发机器上有IIS 7.5,但在Prod上它仍然是IIS 6.0。 – Amitabh 2010-06-18 15:00:47
集成是指IIS综合管道模式:http://msdn.microsoft.com/en-us/magazine/cc135973.aspx
当集成管道模式是关闭的,因为你正在输入URL的请求不被路由到ASP.NET。此外,由于您正在访问的文件夹中没有default.aspx或类似的“默认文档”,因此IIS默认尝试列出目录的内容。默认情况下,此设置在IIS中被禁用,因此您会收到403.13 Forbidden错误。
如果您需要在IIS 6或IIS 7经典模式下使用ASP.NET MVC,请参阅本页面的“使用IIS的旧版ASP.NET MVC”部分获取详细说明。有几种设置可供您选择:http://www.asp.net/mvc/tutorials/using-asp-net-mvc-with-different-versions-of-iis-cs – MicScoTho 2010-06-18 15:38:40
虽然这大部分是真的。如果在.net 4中使用经典流水线,现在不需要使用通配符,现在有更好的无扩展名URL处理。我正在参考这篇文章http://haacked.com/archive/2010/12/22/asp-net-mvc-3-extensionless-urls-on-iis-6.aspx – cdmdotnet 2012-02-15 20:47:30