使用Web.config重写Url不能与IIS Express一起使用

时间:2014-06-06 21:38:31

标签: asp.net url-rewriting iis-express

我需要使用Url Rewriting,所以我在Web.config中创建了一个测试用例来检查它是否有效:

的Web.config:

<system.webServer>
<rewrite>
  <rules>
    <rule name="Fail bad requests">
      <match url=".*"/>
      <action type="AbortRequest" />
    </rule>
  </rules>
</rewrite>
... other stuff
</system.webServer>

我期待任何localhost:3285中止并失败,但输入正确。

我在IIS Express中使用Url Rewrite

1 个答案:

答案 0 :(得分:2)

我猜你的问题是浏览器缓存。我发现如果我在IE中打开一个网页,然后添加URL重写规则(需要停止IIS express),然后在IE中再次打开同一页面它仍然加载页面(并且看起来中止规则没有被应用) 。但是,如果我清除IE浏览器缓存并刷新页面,则会发生中止。

这是一个适合我的完整Web.config示例

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Fail bad requests">
          <match url=".*"/>
          <action type="AbortRequest" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

您的示例应该有效,因为URL重写模块内置于当前版本的IIS Express中: http://www.iis.net/learn/extensions/introduction-to-iis-express/iis-express-overview