Ami*_*abh 2 asp.net iis asp.net-mvc application-pool asp.net-mvc-2
我在.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.
Run Code Online (Sandbox Code Playgroud)
当我选择应用程序池为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 = "" }
Run Code Online (Sandbox Code Playgroud)
现在以下url工作正常,我可以看到Home/Index页面.
http://myapp/home.mvc
Run Code Online (Sandbox Code Playgroud)
但是仍然会出现相同的错误(HTTP错误403.14 - 禁止)
http://myapp/
Run Code Online (Sandbox Code Playgroud)
这应该有效,因为我已将Root映射到Home/Index操作.
更新
这是在Win 7 Ultimate Turbo Gold Premium 64位系统上的IIS 7.5上.应用程序池以集成模式运行.当我切换到经典时,一切都像广告一样有效.如果我在经典模式下运行我的应用程序,则应该像它应该那样授予公共访问权限.所以这就是问题:如果我想要如何在集成模式下运行它?
使用经典模式,您需要执行通配符映射或在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
);
Run Code Online (Sandbox Code Playgroud)
这些方法肯定有效; 实际上,这是支持IIS 5-6的唯一方法.另一方面,使用IIS 7,我只使用集成模式.
| 归档时间: |
|
| 查看次数: |
5872 次 |
| 最近记录: |