私は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
に設定されていることがわかります。
完全な記事のリンクは、それを本当にうまくまとめています。 質問に答えない部分に追加するには、ASP.NETランタイムはルートの 'Global.asax'ファイルからHttpApplicationインスタンスを作成します。 – marcind
ありがとうmarcind - 私は完全にその部分を見落としました。 –