1

我对 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-but x64- 和 iis 7.0),它在两种模式下都能完美运行。看起来是配置问题还是什么?

4

3 回答 3

0

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

于 2008-11-21T21:45:39.250 回答
0

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

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

祝你享受它。

于 2008-11-23T12:08:39.583 回答
0

最后我找到了可行的解决方案。

.NET 3.5传输请求

于 2009-01-08T14:21:17.423 回答