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="" />

Classic ASP Pipeline を使用する IIS 7.0 (Vista) では問題なく動作しますが、パイプライン モードを Integrated に変更すると動作しなくなります。debugger/events/logfiles には例外、エラーなどはありません。ページが見つからないというメッセージがブラウザーに表示されるだけです。一番ひどいのは、ページ名が綴りを間違えているか、元のページと書き直したページの一部をマージしたように見えることです。

コードを別のコンピューター (vista - ただし x64 - および iis 7.0) にデプロイしましたが、両方のモードで完璧に動作します。設定に問題があるようですが、それとも何ですか?

4

3 に答える 3

0

最後に、実用的な解決策を見つけました。

.NET 3.5転送要求

于 2009-01-08T14:21:17.423 に答える
0

推測: アセンブリ名で型を修飾します (type="MyModule,MyAssembly")

于 2008-11-21T21:45:39.250 に答える
0

さて、テスト済みの Microsoft によってリリースされた URL Rewrite Module を使用することをお勧めします。

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

楽しんでいただければ幸いです。

于 2008-11-23T12:08:39.583 に答える