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) にデプロイしましたが、両方のモードで完璧に動作します。設定に問題があるようですが、それとも何ですか?