1

カスタム エンジンを使用して自動 URL 書き換えで構築しているカスタム サイトがあります。ページの URL が .htm や .html などで終わらない限り、書き換えは正常に機能します。これらのページでは、最初に書き換えエンジンにアクセスする代わりに、iis 404 ページに直接移動します。

その Web サイトの IIS6 構成の「ホーム ディレクトリ」セクションに * ワイルドカード ハンドラーがありますが、これらの URL は無視されているようです (私の Web の URL ハンドラーに送信される css、jpg、js なども同様です)。事業)。ページが正常に存在する場合は引き続きページを提供しながら、これらの URL を強制的にハンドラーに送信するように IIS6 を設定するにはどうすればよいですか?

ハンドラーは基本的にこれを行います

if (!File.Exists(Request.Path))
{
    doMyRewriting();
}

このようなブロックを使用することを想定する必要があります (例として、実際のブロックは Request.Path をすべて適切にフォーマットするために他のことを行います) 要求されたファイルが存在しない場合は、「doMyRewriting()」を実行する必要があります。通常どおりページを提供します。私は間違っていますか?

.htm および .html ページを .NET ハンドラーに送信するように IIS に具体的に指示すると、書き換えは機能しますが、ページが実際にそこにある場合、それは提供されません。

どんな助けでも大歓迎です。

前もって感謝します!

4

3 に答える 3

3

これを実行できるかどうかはわかりませんが、使用できるIonicsIsapiURLリライターがあります。

http://www.codeplex.com/IIRF

基本的にそれをインストールしてから、リライトエンジンにヒットするように.htmlを削除するルールを設定します。いくつかのブログでIIS6で使用しています。

于 2008-12-31T17:47:24.497 に答える
1

私の意見では、IIS 6 での URL の書き換えは、アンマネージ ネイティブ コードとして記述された ISAPI フィルターで処理するのが最適です。そうしないと、言及した問題に遭遇します-すべての拡張機能を ASP.Net にマップする必要があり、単純なファイル処理の機能が失われます。ISAPI フィルタを使用すると、一部の URL を書き換えずに IIS で通常どおり処理するように選択できます。

まず、MSDNのISAPI フィルターの概要を読むことをお勧めします。

フィルターに .Net Framework ランタイムがどうしても必要な場合は、CLR をホストし、要求をマネージ コードに転送する小さな ISAPI フィルター シェルを作成することができます。Filter.Net Frameworkはこのアプローチを採用しており、ニーズに適している場合があります。このアプローチには、メインの IIS プロセスで実行される ASP.Net アプリケーションと同じ .Net バージョンを使用する必要があるという小さな欠点があります。

于 2009-01-03T06:43:24.950 に答える
1

IIS にすべての要求を .NET とハンドラーに送信させる場合、ハンドラーはページが存在するかどうかを検出し、書き換える代わりにそれを提供する必要があると思います。

UrlRewriting.NET にはこれを行うためのオプションがあります。コードを見て、このケースをどのように処理しているかを確認してください。

于 2008-12-31T17:28:11.353 に答える