ですから、IHttpHandler
と呼ばれる実装したクラスがあります。これは、すべてのURLをリダイレクトしているので
<httpHandlers>
<add verb="*" path="*" type="Example.MyHandler"/>
</httpHandlers>
:MyHandler
をし、それが名前空間Example
でだ、あなたはサイトのWeb.Config
httpHandlersセクションの中に以下のエントリを作成する必要がありあなたのWebサイト/アプリケーションのハンドラには、静的コンテンツ(imgs、スクリプト、スタイルシートなど)を提供する方法を考慮する必要があります。
<httpHandlers>
<add verb="*" path="*" type="Example.MyHandler"/>
<add verb="GET,HEAD" path="static/*" type="System.Web.StaticFileHandler" />
</httpHandlers>
を(Visual Studioの中に埋め込まれた)、ローカルのdevのウェブサーバの場合、これはすべてのことが必要なのである:一つの方法は、あなたが、その後のようなあなたのハンドラを設定することができ、http://example.com/static/...
のような一貫性のあるURLに静的なコンテンツを格納することです。 IISでは、これらのURLを処理する方法についてIISに指示する必要があります(サーバーが最初に送信する場所を決定するために、ASP.NETに送信するかどうかなど)。
- オープン:IISマネージャ - >
- 章:ウェブサイト - >
- は右あなたのウェブサイトをクリックしてください - >
- オプション:[プロパティ - >
- タブ:ホームDirectoy - >
- ボタン:[設定...] - >
- タブ:マッピング - >
- セクション:「ワイルドカードアプリケーションマップ(実装順序) : " - >
- ボタン:[挿入...] - >
- 実行可能ファイル: "C:\ WINDOWS \ Microsoft.NET \ Frameworkの\ v2.0.50727ののの\ ASPNET_ISAPI.DLL"(またはあなたのハンドラが使用する.NETランタイムのいずれかのバージョン) - >
- のチェックを外し「があることを確認します。 [OK]
は今IISとASP.NETの両方があなたのURLに対処する方法を知っている:>
ボタン - ファイルが」存在しています。 上記のアプローチは、静的ファイルを要求するときに、ASP.NETがIISではなく実際にファイルを提供していることを意味します。これは、いくつかの短所(here)につながります。ディレクトリをアプリケーション(IISマネージャー)に切り替え、ワイルドカードマッピングステートメント(上に追加)を削除し、アプリケーションから戻すことで、この動作を無効にすることができます(ワイルドカードマッピングを静的ディレクトリから無効にする)。 Voilà - 静的ファイルはIISに処理され、ASP.NETを嫌うことはありません。
「私はそれにHTTPハンドラを使用しません」と説明できますか?私が知る限り、HTTPハンドラは通常のASPXページよりも優れたパフォーマンスを提供しますが、HTTPハンドラの欠点はありません。 –
ページルーティングはより簡単で柔軟性があります。それはあなたが説明したもののために設計されています。 HTTPハンドラが高速になる可能性はありますが、ASP.NETページのサポートの一部が実行/ロードされていないためです。私はちょうどカスタムHTTPハンドラを実装しています。それは素晴らしい作品です。しかし、私はそれがあなたが記述したもののための正しいアプローチだとは思わない。 –
返信いただきありがとうございます...「直進性と柔軟性」を意味するものをさらに詳しく説明できますか?私はHTTPハンドラのアプローチが非常に簡単で簡単になることを見ています。さらに、URLルーティングソリューションの仕組みについて具体的に説明できますか? Ruduは彼の答えで本当に詳しく述べられました。もう一度、ジョナサンに感謝します。 –