IIS7 で実行されている ASP.NET 3.5 アプリケーションで Context.RewritePath() を使用しています。
私はアプリケーションの BeginRequest イベントでそれを行っており、すべてがファイルで動作します。
/sports の要求は、default.aspx?id=1 などに正しく書き換えられます。
問題は、私の IIS ログに、/sports ではなく、/Default.aspx?id=1 に対する GET 要求が表示されることです。
この種のコードは、IIS6 で完全に機能しました。
ビジネス ロジックを実装する必要があるため、Microsoft Rewrite モジュールを使用することはできません。
ありがとう。
編集:
ハンドラーがパイプラインで早すぎるようですが、ロジックを後のイベントに移動すると、書き換え全体が機能しません (遅すぎて、StaticFileHandler が要求を受け取ります)。
私はググってググって、周りに尋ねましたが、誰もこの問題を抱えていないとは信じられませんか?
編集:
うわぁ!IISフォーラムで見つけたものは次のとおりです。
「これは、統合モードでは IIS と asp.net が共通のパイプラインを共有し、RewritePath が IIS によって認識されるようになったためです。一方、IIS6 では、IIS によってさえ認識されませんでした。次のように動作するクラシック モードを使用することで、これを回避できます。 IIS6.」
最終更新:以下の私の回答をご覧ください。実稼働環境で 1 年以上経過した結果を更新しました。