3

我们将 Intelligencia URLRewriting 模块用于带有 2.0 版框架和 IIS6 的 asp.net。我们的 URL 通常没有扩展名。

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

但是,它有效!有时。在其他时候(例如,在一个开发人员的机器上,以及当我在应用程序上指向不同的虚拟目录时在我的机器上)它不会。“它不起作用”我的意思是配置的 HttpModules 甚至永远不会被命中。

谁能解释一下?

谢谢。

4

4 回答 4

4

所以事实证明发生了以下事情:

我想这可能证明对某人有用,但我们正在转向 isapi 过滤器。一个提醒是,默认情况下这将导致重定向的紧密循环!

于 2009-02-12T15:54:46.967 回答
2

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

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

于 2009-02-12T09:33:33.827 回答
1

您确定当“它有效”时您没有在 VS.NET 中包含的 Cassini 开发 Web 服务器下运行?因为无扩展通配符在 Cassini 下确实有效,这至少可以说是非常令人困惑的。

于 2009-02-12T10:00:29.720 回答
-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>

于 2011-12-11T07:06:03.157 回答