使用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、將應用程序池的托管管理道模式為經典。