【问题标题】:Rewritepath and IIS Integrated Mode重写路径和 IIS 集成模式
【发布时间】:2008-11-21 13:47:01
【问题描述】:

我对 IIS 7.0 的 url 重写有很大的问题。

我为我的 NET3.5/IIS7 Web 应用程序重写了简单的模块。这是部分代码。

    public void Init(HttpApplication context)
    {
        context.BeginRequest += new EventHandler(context_BeginRequest);
    }

    void context_BeginRequest(object sender, EventArgs e)
    {
        HttpApplication app = sender as HttpApplication;
        if (app.Request.Path.Contains("pagetorewrite.aspx"))
            HttpContext.Current.RewritePath("~/otherpage.aspx");
    }

我在 web.config 中注册了我的模块:

  <system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules>
              <add name="MyModule" type="MyModule" preCondition="" />

在使用经典 ASP 管道的 IIS 7.0 (Vista) 下,它运行良好,但是当我将管道模式更改为集成时,它停止工作。调试器/事件/日志文件中没有异常、错误和任何内容 - 只有在浏览器中没有找到该页面的消息。最奇怪的是,页面名称看起来像是拼写错误或从原始页面的某些部分合并而来。

我已经在另一台计算机上部署了我的代码(也是 vista - 但 x64- 和 iis 7.0),它在两种模式下都能完美运行。 看起来是配置问题还是什么?

【问题讨论】:

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


    【解决方案1】:

    只是猜测:使用程序集名称限定您的类型 (type="MyModule,MyAssembly")

    【讨论】:

      【解决方案2】:

      嗯,推荐你使用微软发布的经过测试的URL Rewrite Module。

      http://learn.iis.net/page.aspx/460/using-url-rewrite-module/

      希望你喜欢它。

      【讨论】:

        【解决方案3】:

        我终于找到了可行的解决方案。

        .NET 3.5 TransferRequest

        【讨论】:

          猜你喜欢
          • 2018-09-06
          • 2011-08-13
          • 2015-08-26
          • 1970-01-01
          • 2020-09-30
          • 2015-08-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多