标签:iis asp.net mvc
IIS有两种模式:经典模式和集成模式。IIS7之前的版本都是经典模式,而从IIS7开始出现了集成模式,为了向后兼容也有经典模式。
经典模式是用ISAPI扩展Aspnet_isapi.dll来处理asp.net服务器页面,而集成模式把ISAPI扩展组件集成到了IIS中。从性能上讲,集成模式要优于经典模式。
下面我们通过一个例子来看看在IIS经典模式下运行ASP.NET MVC应用程序需要做哪些额外的配置。
新建一个MVC4.0程序
这里我们用IIS EXPRESS服务器调试,将模式设置为经典模式,步骤如下:
1、找到IIS EXPRESS配置文档,打开默认安装在C:\Users\当前账号名\Documents\IISExpress\config\applicationhost.config配置文件
//站点信息 <site name="MvcIISMode" id="31"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="C:\Users\v.taoerchun\Documents\Visual Studio 2013\Projects\MvcIISMo de\MvcIISMode" /> </application> <bindings> <binding protocol="http" bindingInformation="*:63679:localhost" /> </bindings> </site> //默认模式设置 <applicationDefaults applicationPool="Clr4IntegratedAppPool" />
2、删除原有站点配置,即<site></site>节点
3、将默认模式设置为经典模式: Clr4ClassicAppPool
<applicationDefaults applicationPool="Clr4ClassicAppPool " />
4、注销电脑
我也很纳闷为什么每次修改配置文件非要注销才能生效,这个问题折腾了我很久,最后非得注销才解决问题。大家也可以试试。
UrlRouting规则:
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); }运行程序:
可以看出,不需要做任何配置就能正常访问
现在我们更改Route规则,在action后面任意增加字符
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}.do/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); }
重新生成项目,运行:
程序报错,提示找不到目录。
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}.aspx/{action}.do/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:iis asp.net mvc
原文地址:http://blog.csdn.net/taoerchun/article/details/46740307