ASP MVC 学习系列——02 Deploy到IIS 5.1

 建立了一个ASP MVC project,实现了简单的login功能。当尝试部署到IIS的时候,出现问题:

除了default.aspx之外,其他页面都无法打开。

 

google了一下,发现原因是:

ASP.NET MVC框架靠ASP.NET Routing来将浏览器请求转到控制器行为上。

也就是说,当输入网址后,产生的浏览器请求,是不能被ASP MVC框架直接处理的,

需要ASP.NET Routing将其转化成控制器(controller)行为,才能找到相应的页面。

 

然而不幸的是,并不是所有的IIS版本都支持ASP.NET Routing:

  •     IIS7.0 (集成模式) - 支持ASP.NET Routing
  •     IIS 7.0(经典模式) - 需要针对ASP.NET Routing进行一些特殊配置
  •     IIS 6.0和更低版本   - 需要针对ASP.NET Routing进行一些特殊配置

<http://www.cnblogs.com/deafcat/archive/2009/03/03/1401966.html>

 

我用的是IIS 5.1,针对它的配置如下:

1) 在IIS应用程序配置中新增.mvc的映射方法:

IIS站点属性=>目录=>配置=>映射=>添加=>可执行文件C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll,扩展名为:.mvc 

动作可选全部,也可设定为:GET,HEAD,POST,DEBUG 同时必须选中脚本引擎且不能选择检查文件是否存在选项。

2) 修改MvcApplication类的RegisterRoutes方法:

将{controller}/{action}/{id}修改为{controller}.mvc/{action}/{id}。

示例代码:

routes.MapRoute( "Default", "{controller}.mvc/{action}/{id}", new {action = "Index", id = ""} ); routes.MapRoute( "Root", "", new {controller = "Home", action = Index", id = ""} ); 

 

这样,在Url里会有.mvc的后缀,对于这个扩展名,由于我们添加了对.mvc要用aspnet_isapi.dll处理的映射,

那么ASP.NET Routing可以将这个浏览器请求转换成相应的controller行为。

你可能感兴趣的:(ASP MVC 学习系列——02 Deploy到IIS 5.1)