4

我已经在 IIS 中设置了 URL 路由。当我将runAllManagedModulesForAllRequests设置设置为 true 时,URL 路由工作。

使用以下 web.config(并runAllManagedModuesForAllRequests设置为 false)我得到 404:

  <system.web>
    <compilation defaultLanguage="c#" debug="true" targetFramework="4.5">
      <assemblies>
        <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      </assemblies>
    </compilation>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
      <remove name="UrlRoutingHandler" />
      <add name="UrlRoutingHandler"
           preCondition="integratedMode"
           verb="*"
           path="UrlRouting.axd"
           type="System.Web.HttpForbiddenHandler, 
                     System.Web, Version=2.0.0.0, 
                     Culture=neutral, 
                     PublicKeyToken=b03f5f7f11d50a3a" />
    </handlers>
    <modules>
      <remove name="UrlRoutingModule" />
      <add name="UrlRoutingModule"
            type="System.Web.Routing.UrlRoutingModule, 
                System.Web.Routing, 
                Version=3.5.0.0, 
                Culture=neutral, 
                PublicKeyToken=31BF3856AD364E35"/>
    </modules>
  </system.webServer>

如何仅为某些请求设置 URL 路由?

我已经在 IIS 7.5 和 IIS 8 中测试了此配置。这是在 Web 表单应用程序中。所有 URL 都演示了 404 行为。

4

1 回答 1

1

“runAllManagedModulesForAllRequests”为真,意味着 asp.net 处理程序(当然,当您处于集成模式时)将为所有扩展(包括无扩展)触发,如果您没有 aspx 并且它设置为 false,您的模块可以不要处理它。

您无法为要实现的目标设置扩展子集,但您可以在模块中自行过滤以仅处理某些扩展。

于 2013-10-03T16:15:29.783 回答