HttpModule使用IIS6重写URL,没有无扩展名的URL

时间:2009-02-12 09:23:49

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

我们正在使用带有2.0版框架和IIS6的asp.net的Intelligencia URLRewriting模块。我们的网址通常没有扩展名。

据我所知,如果没有毯子通配符(导致其他问题),IIS6无法真正处理这种情况。

但是,它有效!有时。在其他时候(例如在一台开发者的机器上,当我在应用程序上指向另一个虚拟目录时,在我的机器上)它没有。通过“它不起作用”我的意思是配置的HttpModules永远不会被击中。

任何人都能解释一下吗?

感谢。

4 个答案:

答案 0 :(得分:4)

事实证明发生的事情如下:

我想这对某人来说可能是一个有用的方法,但我们正在转向isapi过滤器。一个单挑是默认情况下会导致重定向的紧密循环!

答案 1 :(得分:2)

如果您使用Visual Studio开发Web服务器运行站点,则所有请求都将由asp.net处理,因此您的HttpModule将运行。

在IIS6上,除非将其设置为将请求转发到asp.net,否则不应该发生这种情况。

答案 2 :(得分:1)

你确定当它“工作”时你没有在VS.NET中包含的Cassini开发Web服务器下运行吗?因为无扩展的通配符在Cassini下工作,至少可以说是非常混乱。

答案 3 :(得分:-2)

如果您使用的是带有ASP.net 4.0的IIS6,则必须指定并注册模块,如下所示:

<system.web>
<httpModules>
      <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>

不是

<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
      <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>
</modules>