ASP.NET MVC如何连接到ASP.NET?

前端之家收集整理的这篇文章主要介绍了ASP.NET MVC如何连接到ASP.NET?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图更好地了解ASP.NET和ASP.NET MVC背后的“ plumbing”.我一直在阅读 this page,这帮助了很多.从我迄今为止所了解的每个ASP.NET网站都有一个继承自System.Web.HttpApplication的类.然后HttpApplication会有一系列触发HttpModules和HttpHandler的事件,如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

这些指定在哪里?同样,如果我检查HttpContext.Current.Handler我可以看到它设置为System.Web.Mvc.MvcHandler.

解决方法

当第一个用户访问您的网站时:

1)它加载由应用程序承载的所有web.config所指定的所有Http模块.

2)如果系统启用了ASP.NET MVC,则global web.config会将UrlRoutingModule注册到请求流程中.

现在,您在global.asax(如标准MvcApplication)中从HttpApplication派生的类被编译到dll中.铭记这一点…

5)ASP.NET运行时扫描YourApplication.dll以获取源自HttpApplication的类,并执行其许多方法(例如Application_Start).

6)当使用惯用的ASP.NET MVC MapRoute扩展方法创建路由时,它将该路由与MvcRouteHandler相关联.

7)UrlRoutingModule(从步骤2)使用routing handler来选择ASP.NET将用于处理该路由上的传入请求的http处理程序.

你可以找到the full story here.

猜你在找的asp.Net相关文章