【问题标题】:HttpModule URL rewriting using IIS6 with no extensionless URLs使用无扩展 URL 的 IIS6 重写 HttpModule URL
【发布时间】:2010-10-07 03:17:27
【问题描述】:

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

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

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

谁能解释一下?

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我们在所有情况下都使用 IIS6。
    【解决方案2】:

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

    【讨论】:

    • 是的。没有开发人员使用 Cassini。它适用于各种测试服务器,这些服务器的部署方式与我们的实时网站相同。由于这个黑魔法之谜,我们可能会改用 ISAPI 过滤器,但我很想知道实际发生了什么。
    • 我应该看到你的其他回复。我想我只是太热衷于发布关于卡西尼的可能性。从 Cassini 迁移到 IIS6 并发现这不起作用是我最大的“doh”时刻之一。
    【解决方案3】:

    原来发生的事情如下:

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

    【讨论】:

      【解决方案4】:

      如果您在 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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多