建立了一个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}。
示例代码:
这样,在Url里会有.mvc的后缀,对于这个扩展名,由于我们添加了对.mvc要用aspnet_isapi.dll处理的映射,
那么ASP.NET Routing可以将这个浏览器请求转换成相应的controller行为。