ASP.NET使用UrlRewrter.dll在IIS7.5上出现404

   开言:最近刚换了份工作,一直忙于手头的工作,有段时间没有更新了,真的想念OSC了!

    今天下午,公司的一个女程序员,把这两天用cms做好的一个的公司网站发布上去了,这个是一个给我们公司自己做得网站。本地环境,VS2010 .NET Framework 4.0,虚拟空间,是IIS7.5的,通过测试以后,就准备上线。她看着自己这些天辛勤付出的工作结果,在上线前,不免有些小激动,哈哈,不扯这些了。发布上线后,我就站在她旁边,看着她,输入域名,打开网站,一副美丽的画面就呈现在眼前,我让她点击首页的大导航,一个错误扑面而来,404,大家可以多留意这些错误画面,它还告诉我们一个重要的信息,那就是当前服务器上.net版本。第一时间想到是重写出了错。然后她开始上网查,网上可谓千篇一律,尝试了N多种修改方案,结果依旧,这不免令人有些烦躁和失落。

      以下是她在解决此过程中所走的弯路,拿出来和大家一起分享吧:

      1、出现该错误,又看到错误信息返回IIS7.5 404错误,很明显,虚拟空间用的事IIS7.5版本网络服务器,再查看错误详细信息,说什么:请求路径:www.xxx.com/xxx.html 物理路径:/web/xxx.html等这些看似无用的信息,这时很容易想到,UrlRewriter.dll组件根本没有发生效用,继而联想到是配置出错了,IIS7.0以后,应用程序又分为集成模式和经典模式,在IIS7.0以后,需要在web.config下配置<system.webServer>配置节,添加<modules>和<handlers>,按照网上的说法,这些都已经尝试过了。

    2、虚拟空间,在看不到IIS的环境下,怎样添加aspnet_isapi.dll映射?此方法暂时不可行,网上还有说法,

说什么,联系空间提供商、虚拟空间不支持url重写等,比比皆是,在我看来,毫无价值,反而使延长了解决问题的时间。

   3、在<system.webServer>配置接下增加了<validation validateIntegratedModeConfiguration="false" />
    <modules  runAllManagedModulesForAllRequests="true">
      <remove name="ModuleRewriter" />
      <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
    </modules>,但仍旧于事无补。

    问题的根源究竟在哪里?像iis7.5高版本的网络服务器,应该已经添加过aspnet_isapi.dll的映射了。我们还是

坚持具体问题具体分析的原则,假设虚拟空间没有为我们做这些,也就是说,没有添加过以上组件的映射,那我们可不可以在web.config手动配置呢?答案是Yes,在<system.webServer>下添加如下配置节

      <add name="wildcard" path="*" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="classicMode,runtimeVersionv2.0,bitness32"/>,这样搞定。


你可能感兴趣的:(url重写,Urlrewrter.dll,url重写出现404)