2011-08-09 13 views
10

私はASP.NETとASP.NET MVCの背後にある "plumbing"をよりよく理解しようとしています。私は多くを助けたthis pageを読んできました。これまで私が理解していたことから、すべてのASP.NETサイトにはSystem.Web.HttpApplicationを継承するクラスがあります。 HttpApplicationには、BeginRequest、AuthorizeRequest、End RequestなどのHttpModulesとHttpHandlerをトリガーする一連のイベントがあります。HttpModulesとHttpHandlersは、現在のHttpContextとの間で読み書きを行います。ASP.NET MVCはASP.NETにどのように接続されていますか?

ASP.NETはどのようなHttpApplicationクラスを使用するのかをどのように知っていますか?私のアプリケーションは、Global.asaxファイルに典型的なMvcApplicationクラスを持っています。しかし、私はMVCに関連するこのクラスのものは見ません。また、このクラスを「アプリケーション」として割り当てる場所はありません。 ASP.NETは、Global.asaxという名前のファイルを検索するだけで、作成するHttpApplicationクラスを把握していますか?または、ASP.NETは自分のアセンブリでHttpApplicationから継承するクラスを探しますか?

さらに、使用するモジュールとハンドラはどのように分かりますか?上記のページでは、ハンドラとモジュールの指定とweb.configの設定について説明しました。しかし、私のASP.NET MVCアプリケーションはweb.configにこれらの設定を持っていませんか?

私は私の行動のいずれかの方法でブレークポイントを設定し、HttpContext.Current.ApplicationInstance.Modulesをチェックすると、私は以下を参照してください。

OutputCache 
Session 
WindowsAuthentication 
FormsAuthentication 
PassportAuthentication 
RoleManager 
UrlAuthorization 
FileAuthorization 
AnonymousIdentification 
Profile 
ErrorHandlerModule 
ServiceModel 
UrlRoutingModule-4.0 
ScriptModule-4.0 
__DynamicModule_System.Web.WebPages.WebPageHttpModuleDefaultAuthentication 
これらを指定された

?同様に、HttpContext.Current.Handlerをチェックすると、System.Web.Mvc.MvcHandlerに設定されていることがわかります。

答えて

5

最初のユーザーがサイトを打つ:

1)それはあなたのアプリケーションに耐えるすべてweb.configsで指定されたすべてのHTTPモジュールをロードします。

2)システムがASP.NET MVC対応の場合、global web.configUrlRoutingModuleを登録し、要求パイプラインに組み込みます。

これで、global.asaxのHttpApplication(標準MvcApplicationなど)から派生したクラスがdllにコンパイルされました。それを念頭に置いて...

5)ASP.NETランタイムは、HttpApplicationから派生し、いくつかのメソッド(例:Application_Start)を実行するYourApplication.dllクラスをスキャンします。

6)慣用のASP.NET MVC MapRoute拡張メソッドを使用してルートを作成すると、そのルートがMvcRouteHandlerに関連付けられます。

7)UrlRoutingModule(手順2以降)では、routing handlerを使用して、ASP.NETがそのルート上の着信要求を処理するために使用するhttpハンドラを選択します。

the full story hereがあります。

+0

完全な記事のリンクは、それを本当にうまくまとめています。 質問に答えない部分に追加するには、ASP.NETランタイムはルートの 'Global.asax'ファイルからHttpApplicationインスタンスを作成します。 – marcind

+0

ありがとうmarcind - 私は完全にその部分を見落としました。 –

関連する問題