web-dev-qa-db-ja.com

IIS URL書き換えとURLルーティング

WebフォームアプリケーションにURLルーティングを使用することを計画していました。しかし、いくつかの posts を読んだ後、それが簡単なアプローチであるかどうかはわかりません。

RL Rewrite module をWebフォームに使用する方が良いですか?ただし、これはIIS7専用です。最初は、URLルーティングがAsp.Net MVCから完全に分離され、Webフォームに使用できるという噂がありました。

どんな提案も聞きたいです。

48
Gulzar Nazim

IISチームのメンバーからの2つの違いについて ここに大きな投稿 があります。

私が忠告する警告の1つは、Webフォームの場合、ルーティングを使用するときは注意する必要があることです。これらの懸念に対処し、うまくいけば質問への回答を助ける WebFormsを使用したルーティング の使用方法のサンプル実装を作成しました。

25
Haacked

これは、このトピックについて私が見つけた最高の記事です: IIS URL Rewriting and ASP.NET routing by Ruslan Yakushev。

IIS URL書き換え

クライアントがWebサーバーに特定のURLを要求すると、URL書き換えコンポーネントは、要求されたURLを分析し、同じサーバー上の別の別のURLに変更します。 URL書き換えコンポーネントは要求処理パイプラインの非常に早い段階で実行されるため、Webサーバーが要求の処理に使用するハンドラーを決定する前に、要求されたURLを変更できます。

IIS URL Rewriting

ASP.NETルーティング

ASP.NETルーティングは、Resolve Cacheステージ(PostResolveRequestCacheイベント)およびMap Handlerステージ(PostMapRequestHandler)でIIS要求処理パイプラインにプラグインするマネージコードモジュールとして実装されます。 NETルーティングは、Webアプリケーションに対して行われたすべての要求に対して実行されるように構成されています。

IIS URL Routing

URL書き換えとASP.NETルーティングの違い:

  1. URL書き換えは、URLパスの操作に使用されますリクエストがWebサーバーによって処理される前。 URL書き換えモジュールは、どのハンドラーが最終的に書き換えられたURLを処理するかについては何も知りません。また、実際のリクエストハンドラは、URLが書き換えられたことを認識していない場合があります。
  2. ASP.NETルーティングを使用して要求されたURLパスに基づいてハンドラーに要求をディスパッチ。 URLの書き換えとは異なり、ルーティングコンポーネントはハンドラーを認識し、要求されたURLに対する応答を生成するハンドラーを選択します。 ASP.NETルーティングは、高度なハンドラーマッピングメカニズムと考えることができます。

これらの概念的な違いに加えて、IIS URLの書き換えとASP.NETルーティングの間にはいくつかの機能的な違いがあります:

  1. IIS URL-rewriteモジュールは、ASP.NET、PHP、ASP、および静的ファイルを含む、あらゆるタイプのWebアプリケーションで使用できます。ASP.NETルーティングは、.NETでのみ使用できますフレームワークベースのWebアプリケーション。
  2. IIS URL-rewriteモジュールは、アプリケーションプールに統合またはクラシックIISパイプラインモードが使用されているかどうかに関係なく、同じように機能します。ASP.NETルーティングの場合、統合パイプラインモードを使用することをお勧めします。ASP.NETルーティングはクラシックモードで機能しますが、その場合、アプリケーションのURLにファイル拡張子を含めるか、アプリケーションをIISで "*"ハンドラーマッピングを使用するように構成する必要があります。
  3. URL書き換えモジュールは、ドメイン名、HTTPヘッダー、サーバー変数に基づいて書き換えを決定できます。既定では、ASP.NETルーティングはURLパスとHTTP-Methodヘッダーでのみ機能します。
  4. 書き換えに加えて、URL書き換えモジュールはHTTPリダイレクトを実行し、カスタムステータスコードを発行し、リクエストを中止できます。 ASP.NETルーティングはこれらのタスクを実行しません。
  5. URL書き換えモジュールは、現在のバージョンでは拡張できません。 ASP.NETルーティングは完全に拡張可能でカスタマイズ可能です。
40
splattne

フォーマットされたURLをページのスポーンのファクトリーにしたいですか?

または、.aspxを廃止しますか?

書き換えは、.aspxを廃止するため、または単にURLを整理するためのものです。

ルーティングは、リクエストを見て、それを処理するオブジェクトを決定するためのものです。それらは同じように聞こえます、フィル・ハックは主題に関していくつかの良い記事を持っています。

iis6では、isapiRewriteは非常に優れています

7
DevelopingChris

私は最近、自分のサイトのURLの見栄えをよくするために独自の書き換えシステムを作成しました。基本的には、独自の IHttpModule を記述してweb.configに追加し、着信要求をインターセプトする必要があります。次に、HttpContext.Current.RewritePathを使用して、ポイントしているものを変更できます。

また、サイトを すべてにaspnet_isapiを使用する に構成することもできます。

(PageMethodsのように) "テール"を使用するページを操作したり、ページ要素やフォームポストバックのパスを作成したりするなど、小さな問題の多くを発見しますが、問題は解決します。

興味があれば、私はコードへのリンクを投稿することができ、あなたはそれをチェックアウトすることができます。私はすでに多くの問題を解決しているので、あなたが進むにつれてそれを読むことができます。他にも多くの人がこれをやっていて、良いリソースかもしれないと確信しています。

4
Hugoware

この質問への私の answer をチェックすることをお勧めします: ASP.NET-独自のルーティングシステムの構築 。 ASP.NET MVCプロジェクトから生まれた、URL書き換えメソッドまたは使用可能な新しいルーティングエンジンを使用して、独自のルーティングシステムを構築するのに役立ついくつかの優れたリファレンスを含めます。

2
Dale Ragan

.Net 3.5 SP1で利用できるダイナミックデータプロジェクトは、URLルーティング実装の良い例を示しています。

0
Norge

IISでのURL書き換えの場合、 [〜#〜] iirf [〜#〜] はIIS5、6、7で機能します。無料です。簡単です。速い。オープンソース。正規表現のサポート。

0
Cheeso