第一步修改RouteConfig.cs文件
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "ActionHtml", // action伪静态 "{controller}/{action}.jsp/{id}",// 带有参数的 URL new { controller = "home", action = "index", id = UrlParameter.Optional }// 参数默认值 ); routes.MapRoute( "ControllerHtml", // controller伪静态 "{controller}.jsp/{action}/{id}",// 带有参数的 URL new { controller = "home", action = "index", id = UrlParameter.Optional }// 参数默认值 ); routes.MapRoute( "Root", "", new { controller = "home", action = "index", id = UrlParameter.Optional });//根目录匹配 routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "home", action = "index", id = UrlParameter.Optional }//默认配置 ); }
第二步修改web.config
IIS6
<system.web> <httpHandlers> <add name="html" verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" /> </httpHandlers> </system.web>
IIS7以上 jexus mvc伪静态也可以如此
<system.webServer> <handlers> <add name="html" verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" /> </handlers> </system.webServer>
上面2步,我在iis7和jexus 就已经搞定了.jexus这边是linux需要注意大小写
配置IIS6据说还要
IIS配置:网站->属性 ->虚拟目录->配置(G)...->映射->通配符应用程序映射->添加
可执行文件:c:/windows/microsoft.net/framework/v2.0.50727 /aspnet_isapi.dll
扩展名为:.html
确认文件是否存在:不选.
配置IIS7.5(不一定用)
你的网站-->IIS中处理程序映射-->
添加脚本映射(路径:*.html 可执行文件%windir%/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll 名称:任意,比如Hml )
添加通配符脚本映射(路径:* 可执行文件:C:/Windows/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll 名称:任意,比如All)
托管处理程序映射(路径:* 可执行文件:System.Web.UI.PageHandlerFactory 名称 任意 比如Html-Integrate)-------->
IIS中 模块-->添加---->(名称:任意 如All 类型:URLRewriter.ModuleRewriter 把 仅针对向asp.net 应用程序或托管处理程序发出请求调用 勾上 ok )
其他资料
经典模式:经典形式是为了与之前的版本兼容,运用ISAPI扩展来调用ASP.NET运转库,原先运转于IIS6.0下的Web应用程序迁移到IIS7.0中只需将应用程序配置成经典形式,代码根本不用修正就能够正常运转。太长了 只要记住一点,兼容(.net1.1/2.0/3.5) 用这个模式
集成模式:集成形式是一种统一的乞求处置管道,它将ASP.NET恳求管道与IIS中心管道组合在一同,这种形式可以提供更好的性能,可以完成配置和管理的模块化,而且增加了运用托管代码模块扩展IIS时的灵敏性。太长了,只要记住一点,.net4.0和4.5版本开发就用它,它的性能高还能重写!