使用UrlRewriter.dll实现的URL重写在VS2008中测试通过,但在IIS下无效,返回404
原因:主要是IIS应用程序扩展名映射,iis的工作流程应该是遇到.aspx扩展名,交给.net处理,然后才能调用httpModules进行url映射,如没有aspx扩展名,iis会直接当成文件架,返回404错误了;而vs2008里的调试web服务器把所有的请求都发给了.net处理,所以成功。
处理办法:先把IIS应用程序池的托管管理道模式为集成(为了可以做第3,4步)。
首先在IIS中的站点里,找到处理程序映射,双击进去。
1、添加脚本映射(路径:*.html可执行文件%windir%Microsoft.NETFrameworkv2.0.50727aspnet_isapi.dll名称:任意,比如Html)。
2、添加通配符脚本映射(路径:*可执行文件:C:\Windows\Microsoft.NET\Frameworkv2.0.\50727\aspnet_isapi.dll名称:任意,比如All)。
3、托管处理程序映射(路径:*.html可执行文件:System.Web.UI.PageHandlerFactory名称任意比如Html-Integrate)。
4、IIS中找到模块(双击进去)-->添加托管模块---->(名称:任意如All类型:URLRewriter.ModuleRewrite把仅针对向asp.net应用程序或托管处理程序发出请求调用勾上。
5、将应用程序池的托管管理道模式为经典。