application.EndRequest + =
( 新しい EventHandlerの( この .Application_EndRequest));
}
プライベート ボイド Application_BeginRequest(オブジェクトソース、 のEventArgs電子) { // アクセスするのHttpApplicationとのHttpContextオブジェクトを作成// 要求及び応答特性を。 HttpApplicationアプリケーション = (のHttpApplication)源; HttpContextコンテキスト = application.Context。 context.Response.Write(" <H1> <フォント色=赤> HelloWorldModule:要求の最初</ FONT> </ H1> <時間> " );
}
プライベート ボイド Application_EndRequest(オブジェクトソース、のEventArgs e)の { のHttpApplicationアプリケーション = (のHttpApplication)源; HttpContextコンテキスト = application.Context。 context.Response.Write(" <時間> <H1> <フォント色=赤> HelloWorldModule:リクエストの最後</ FONT> </ H1> " ); } 公共ボイド 廃棄() { } } < のsystem.web > < のHttpModules > < 名前を追加= " HelloWorldModule "
= " HelloWorldModule " /> </ のHttpModules > </ のsystem.web >
Asp.netプロセス要求
-------------------
何か習得しなければならないHttpModuleを
のHttpHandlerは非常に便利なもの習得しなければならない
2つの以上のインスタンス
---を------------------
ASP.NETのイベントモデルのメカニズム
----------------------- 顧客が要求がCLRを実行するのaspxファイルをコンパイルするために送信され、ページがASPNET_ISAPI.DLLこのダイナミックリンクライブラリによって処理される要求しますその後、戻ってブラウザHTMLに流れ-------------------------- 2ページイベントの実行順序Page_Init:値を初期化または接続をPage_Loadを:主に使用IsPostBackプロパティは、メインイベントは、最初のページまたはasp.net応答を作成するために一連の操作を実行することでした、あまりにもクライアント側のイベントの配信によって発生します。このイベント、復元されたページとコントロールのビューステートに先立ち。Page_DataBind:ページレベルの呼び出しでも、単一の制御で呼び出すことができます。DataBind_PreRender:プリレンダリングデータバインディングは、このイベントは、ビューステートを保存し、コントロールをレンダリングする直前に発射されます。Page_Unload:このイベントは、最終的なクリーンアップ作業を実行することです。非決定論的イベントのPage_Error:未処理の例外がページの処理中に発生した場合、励起エラーイベント。Page_AbortTransaction:トランザクションイベント、トランザクショントランザクションは、このイベントが発生し、一般的なショッピングカートを中止された場合。Page_CommitTransaction:あなたが成功している場合は、このイベントの時にトランザクションを発生させます。-------------------------------------------------- ------ Global.asaxのイベント(実行順序)興奮アプリケーションを起動しますのApplication_Start
Application_BeginRquestは:励起httpリクエストを開始する
のApplication_AuthenticateRequestを:興奮承認アプリケーションのHTTPリクエスト
でsession_start:火災セッションが開始
Application_EndRequest:Htttp要求の終わりに励起
のSession_End:セッションが終了したときに興奮
Application_Endを:火災アプリケーションが終了する
のApplication_Errorを:火災にエラーが発生しました
- --------------------
ISAPI:、セットアップ一部のWebサーバーを挿入機能、強化されたWebサーバの機能を拡張します。
ISAPI:拡張機能、Win32のダイナミックリンクライブラリ、などASPNET_ISAPI.DLLとして、ISAPI拡張が通常のアプリケーションとして見ることができる、それがターゲットのHTTPリクエストを扱っています。
ISAPI:フィルタ、Webサーバは、関連するフィルタに要求を渡し、その後、フィルタは要求を修正することができ、いくつかの操作などを行います。
ASP.NETプロセスが要求された:
パイプラインでASP.NETのHTTP要求すべてのモジュールのモデルに基づいて、パイプを。各モジュールは、HTTP要求を受信し、フルコントロールを持っています。HTTPリクエストは、すべてのモジュールを通過すると、最終的にはHTTPハンドラを配置されました。いくつかの処理、および結果だろう、再びHTTPパイプラインモジュールのモジュールスルーを要求するHTTPハンドラ。
-----------
HttpModuleを
ISAPIフィルタ(フィルター):彼は唯一のコンテンツの静的なHTMLページをサポートしていることを意味し、それ自体が動的なページをサポートしていませんIISの.asp .aspxの.cgiでの.phpなど、IISは、これらのサフィックスを処理する方法を知りません。それは、テキストとして扱われ、クライアントに送信され対処しませんでした。この問題を解決するために、IISはISAPIフィルタと呼ばれる機構を備えています。これは、COMコンポーネントです。
ファイルの拡張子は、(例えば、*た.ascx *の.aspxなど)内部登録IIS各拡張を処理するときにASP.NETサービスは、IISに登録します。展開を開始した後、IISが処理できないファイルを処理するための定義の良い方法で、制御はasp.netがASPNET_ISAPI.DLLあり、中に特別な処理コードを処理するためにジャンプします。コードを生成することは、元のHTMLに追加した後、標準のHTMLコードを生成し、プロセスはコードの処理を開始してみましょう、最後のフルHTMLがIISに返され、クライアントにコンテンツを送信し、その後IIS。
----------------
HttpModuleを「
.NETアセンブリSystem.Web.IHttpModuleインターフェースを実現している機能フィルタ(ISAPIフィルタ)のHTTPモジュール。。ASP.NET要求処理パイプラインに自身を挿入するために、特定のイベントに自分自身を登録することにより、これらのコンポーネント。これらのイベントが発生すると、ASP.NETの呼び出しはHTTP要求モジュールに興味があるので、モジュールが要求を処理することができます。時にはそれは、他のシステムでカバーされていないことに注意してください、httpリクエストについてはあまり心配する必要はあり、HttpModuleを内蔵のMachine.configで設定あります。
--------------------------------------
のHttpHandler
これは、情報およびレスポンス(応答)要求(リクエスト)Aの送信を処理するISAPI拡張について機能を実現します。HttpHandler IHTTPハンドラ機能によってインタフェースを実装する必要があります。HTTPハンドラは、インタフェース実装System.Web.IHttpHandler .NETコンポーネントです。このインタフェースを実装するクラスは、着信HTTP要求を処理するために使用することができます。これは、HTTPハンドラです。
前回ASPでは、*要求されたファイルは、HTTPリクエストが最初のプロセスでInetinfo.exeという名前の傍受される.aspページでは、このプロセスは、実際にWWWサービスです。それは、ASPページを説明した後、バッククライアントブラウザへのデータストリームを説明しますasp.dllをプロセス、この要求をインターセプトした後。実際、ASP.DLLは、ASPファイル、ASA、などのファイルの実装の解釈に責任があるIISのISAPIに添付された文書、である
、など---------------------- ---------------
ASP.NET HTTPリクエストの処理方法は
、類似して、HTTP要求がInetinfo.exeのプロセス(WWWサービス)によってインターセプトされ、ファイル拡張子ASP後、クライアントは* .aspxのWebサーバーにファイルをページを要求すると判断されますリクエストは、ASPNET_ISAPI.DLLとASPNET_ISAPI.DLLに転送されます。このHTTPリクエストパイプラインのHTTPパイプラインを通じてASPNET_WP.EXEプロセスに送信されます、HTTPリクエストがASPNET_WP.EXEプロセスを来るとき、asp.netフレームワークが通過しますhttpRuntime、クライアントに処理結果の後、HTTPリクエストに対処します。
------------------------------------
httpリクエストがのhttpRuntime、HTTPリクエストに送信されますHttpApplication工場の呼ばれた容器内に供給され続け、これは容器に入ってくる送信を処理するためのHTTP要求のHttpApplicationインスタンスを与える、その後、httpリクエストは、次のいくつかの容器になります。
HttpModuleを" - >のHttpHandlerファクトリー- >のHttpHandler
システム内部で処理のHttpHandlerのprocessRequestメソッドは、全体のHTTPリクエストが処理された後、クライアントは、対応するものを提供します。
のasp.netの枠組みの中で完全なHTTPリクエストの処理の流れ:
HttpRequest - > inetinfo.exe-> ASPNET_ISAPI.DLL - > HTTPのパイプライン- > ASPNET_WP.EXE - >のhttpRuntime - >のHttpApplicationファクトリー- >のHttpApplication - > HttpModuleを- >のHttpHandlerファクトリー- > HttpHandler- - > HttpHandler.ProcessRequest()
あなたが途中でのHttpRequestを傍受し、独自の処理を行いたい場合は、このときの容器に正確にこのHttpModuleをを行うには、それはのhttpRuntime、それを行うために内部で実行する必要があります。
----------------------------------------
---------- ---------------------------
HttpModuleをのIHttpModuleインターフェイスを達成するためのシステム自体は、当然のことながら、私たち自身のクラスはのIHttpModuleインターフェイスを達成することができ、そのシステムは、HttpModuleをオブジェクトを置き換えることができます。
システムのデフォルトASP.NET HttpModuleを:
DefaultAuthenticationModule認証対象が本明細書であることを確認。それは継承できません。
リモートユーザーが要求したNTファイルにアクセスする権限を持っていることを確認しFileAuthorizationModule。それは継承できません。
フォーム認証を使用するようにASP.NETアプリケーションを有効FormsAuthenticationModule。それは継承できません。
PassportAuthenticationModuleサラウンドPassportAuthentication包装サービスを提供しています。それは継承できません。
SessionStateModuleは、アプリケーションのセッション状態サービスを提供しています。
UrlAuthorizationModuleは、特定のリソースへのアクセスを許可または拒否するURLベースの認証サービスを提供しています。それは継承できません。
Windowsの/ IIS認証を使用するASP.NETアプリケーションを有効にWindowsAuthenticationModule。継承することはできません。
--------------------------------------
machine.configファイル内のシステムデフォルトHttpModuleをコンフィギュレーション、そして我々は関係のweb.configファイルの開発に使用される:要求は時間のプロセスを開始するのHttp場合、それは、どこのページASP.NET Frameworkのディレクトリ内のmachine.configとweb.configファイルのファイルをロードするための要求が続きますマシンは、独自のHttpModuleを用いて構成されて、あなたはまだweb.configファイルで、このマッピングのうち、削除することができますページにあります。
ます。https://www.cnblogs.com/zhangchenliang/archive/2011/05/15/2046728.htmlで再現