httpModules 不适用于 iis 7.5 的 url 重写/扩展少 url(给出错误 500.0)

Posted

技术标签:

【中文标题】httpModules 不适用于 iis 7.5 的 url 重写/扩展少 url(给出错误 500.0)【英文标题】:httpModules not work with iis 7.5 for url rewriting/extention less url (give error 500.0) 【发布时间】:2011-12-21 23:01:22 【问题描述】:

我正在使用 IHttpModule 重写 URL。如果我编写没有扩展名的路径(aspx),则应用程序在本地但在服务器应用程序上工作会出错。

我在 web config 中注册了 URL 重写模块,比如

   <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
         <modules>
      <add name="URLRewriteModule" type="URLRewriteModule" preCondition="ManagedHandler" />
    </modules>
    <defaultDocument>
      <files>
        <add value="Login.aspx" />
      </files>
    </defaultDocument>
  </system.webServer>

还有 ExtensionlessUrlHandler-Integrated-4.0、ExtensionlessUrlHandler-ISAPI-4.0_64bit、ExtensionlessUrlHandler-ISAPI-4.0_32bit 处理程序。然后我也收到以下错误

HTTP 错误 500.0 - 内部服务器错误

模块 ManagedPipelineHandler

通知ExecuteRequestHandler

处理程序 ExtensionlessUrlHandler-Integrated-4.0

错误代码 0x800703e9

【问题讨论】:

【参考方案1】:

我认为你错过了一个配置。

下面是一个例子,在system.web节点和system.webserver节点都需要配置自定义http模块

  <system.web>
<compilation debug="true" targetFramework="4.0" />
<httpModules>
  <add name="CustomHttpModule" type="Routing_Static_Page_Demo.WebModule.CustomHttpModule, Routing_Static_Page_Demo" />
</httpModules>

<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
  <remove name="UrlRoutingModule"/>
  <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, 
                                    System.Web, 
                                    Version=4.0.0.0, 
                                    Culture=neutral, 
                                    PublicKeyToken=b03f5f7f11d50a3a" />
  <add name="CustomHttpModule" type="Routing_Static_Page_Demo.WebModule.CustomHttpModule" />
</modules>

【讨论】:

以上是关于httpModules 不适用于 iis 7.5 的 url 重写/扩展少 url(给出错误 500.0)的主要内容,如果未能解决你的问题,请参考以下文章

在 IIS 7.5 中重写服务器变量

ASP.Net / IIS 7.5 无法识别用于 OutputCache 的 jMeter

IIS UrlRewrite 不适用于 IIS 8

权限维持:Win2008以上的iis

IIS7的集成模式下如何让自定义的HttpModule不处理静态文件(.html .css .js .jpeg等)请求

为啥 cURL 不适用于 IIS7 上的 Windows 身份验证?