50

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

Web フォームにはURL 書き換えモジュールを使用する方がよいでしょうか? ただし、IIS7のみです。当初、URL ルーティングが Asp.Net MVC から完全に切り離されており、Web フォームに使用できるという話題がありました。

どんな提案も聞きたい..

4

7 に答える 7

41

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

IIS URL 書き換え

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

IIS URL 書き換え

ASP.NET ルーティング

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

IIS URL ルーティング

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

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

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

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

IIS チームのメンバーからの 2 つの違いに関する素晴らしい投稿がここにあります。

WebForms の場合、Routing を使用する際には注意が必要です。これらの問題に対処し、うまくいけばあなたの質問に答えるのに役立つWebForms でルーティングを使用する方法のサンプル実装を作成しました。

于 2008-09-18T15:55:04.623 に答える
7

フォーマットされた URL を生成ページのファクトリにしますか?

または、.aspx を削除しますか?

書き換えは、.aspx をなくすか、単に URL を整理するためのものです。

ルーティングは、リクエストを見て、それを処理するオブジェクトを決定するためのものです。それらは似ているように聞こえますが、phil haack にはこの件に関する優れた記事がいくつかあります。

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

于 2008-09-18T04:47:02.543 に答える
4

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

また、すべてに aspnet_isapi を使用するようにサイトを構成する必要があります。

「テール」を使用するページ (PageMethods など) を操作しようとしたり、ページ要素のパスやフォームのポストバックなど、途中で小さな問題がたくさん見つかりますが、それらは乗り越えることができます。

If interested, I can post a link to the code and you can check it out. I've worked a lot of the problems out already so you can read through it as you go. I'm sure there are a lot of other people that have done this as well that might be good resources as well.

于 2008-09-18T14:23:37.120 に答える
2

この質問に対する私の回答を確認してください: ASP.NET - Building your own routing system。URL 書き換え方法または ASP.NET MVC プロジェクトから出てきた新しいルーティング エンジンを使用して、独自のルーティング システムを構築するのに役立つ参考資料をいくつか紹介します。

于 2008-09-18T14:08:34.207 に答える
0

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

于 2008-09-18T04:48:56.097 に答える
0

IIS での URL 書き換えの場合、IIRFは IIS5、6、7で動作します。無料です。簡単。速い。オープンソース。正規表現のサポート。

于 2009-03-09T07:15:04.003 に答える