5

さまざまな形式でスローされたリンクを処理できるリンク リダイレクト サービスを実行しています。これらの形式の 1 つは、リンクの末尾にリンク先 URL を追加することです。たとえば、

http://url.fwd/abcd/http://www.mydomain.com/page.aspx

これは、過去 2 年間 Windows Server 2003 / IIS6 ボックスで動作していましたが、現在 Windows Server 2008 / IIS7 セットアップに移行しようとしており、動作しなくなりました。

URL のコロンに関する問題について読みましたが、'.aspx' で終わらないページには影響しません。例えば、

http://url.fwd/abcd/http://www.mydomain.com/page.php

正常にリダイレクトされます。

http://url.fwd/abcd/http://www.mydomain.com/page.aspx

も正常に動作します (2 つ目のコロンがないことに注意してください)。間違った URL であるにもかかわらず、カスタム 404 ページを使用する URL 転送システムによって処理されます。古いシステムでも同様の問題があったため、「.aspx」のケースを処理するためのメソッドが Global.asax > Application_Error に記述され、問題なく動作しました。

新しいサーバーでは、Global.asax で Application_Error がスローされることはありません。代わりに、System.NotSupportedException - 「指定されたパスの形式はサポートされていません」が発生します。この System.NotSupportedException は、Global.asax ページで処理する正確なケースであるため、確実に発生していません。

いくつかのフォーラムの投稿に示されているレジストリ キーを変更しました。

.aspx のハンドラー マッピング設定を変更しようとしました。

統合ではなくクラシック モードを使用するようにアプリ プールを設定しようとしましたが、画像や CSS などの静的コンテンツがまったく表示されないというまったく別のエラーが発生します。Windows の機能で静的コンテンツが有効になっていることを確認しましたが、有効です。クラシック モードでは、'.aspx' 要求は 2 つの Bad Request エラーをスローし、まったく情報がありません。私が得るエラーページのコードは文字通りです

不正なリクエスト<html><body>不正なリクエスト</body></html>

更新: 静的ファイルのハンドラー マッピングをこのページにある形式に変更しました http://improve.dk/blog/2006/12/11/make-url-rewriting-on-iis7-work-like-iis6 ただし、 、著者が正しく指摘しているように、これはハックであり、IIS7 での正しい方法ではありません。また、クラシック モードでの静的ファイルの問題のみが修正されます。'.aspx' ページは、クラシック モードでもエラーをスローします。

この時点で、どんな考えや意見も大歓迎です。

4

2 に答える 2

8

IIS7ソリューション

IIS 7の簡単な解決策は、web.configファイルに設定を追加して、Global.asaxイベントを介してすべての要求を処理するようにIISに指示することです。web.configにこのセクションを追加または変更するだけで、リクエストが有効になります。

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
于 2010-09-17T09:18:37.083 に答える