Eri*_*tas 10 asp.net asp.net-mvc
我正在努力更好地理解ASP.NET和ASP.NET MVC背后的" 管道 ".我一直在阅读这个页面,它帮助了很多.据我所知,到目前为止,每个ASP.NET站点都有一个继承自System.Web.HttpApplication的类.然后HttpApplication有一系列触发HttpModules和HttpHandlers的事件,如BeginRequest,AuthorizeRequest,End Request等...... HttpModules和HttpHandlers然后读写当前的HttpContext.
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
Run Code Online (Sandbox Code Playgroud)
这些指定在哪里?同样,如果我检查HttpContext.Current.Handler,我可以看到它被设置为a System.Web.Mvc.MvcHandler.
当第一个用户访问您的网站时:
1)它加载由您的应用程序承担的所有web.configs指定的所有Http模块.
2)如果系统启用了ASP.NET MVC,则全局web.config注册a UrlRoutingModule,将其合并到请求管道中.
现在,您HttpApplication在global.asax(例如标准MvcApplication)中派生的类被编译到您的dll中.考虑到这一点......
5)ASP.NET运行时扫描YourApplication.dll以查找派生自HttpApplication并执行其多个方法的类(例如,Application_Start).
6)使用惯用的ASP.NET MVC MapRoute扩展方法创建路由时,它将路由与a关联MvcRouteHandler.
7)UrlRoutingModule(从步骤2开始)使用该路由处理程序来选择ASP.NET将用于处理该路由上的传入请求的http处理程序.
| 归档时间: |
|
| 查看次数: |
366 次 |
| 最近记录: |