首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MvcRouteHandler在哪里注册?

MvcRouteHandler在哪里注册?
EN

Stack Overflow用户
提问于 2012-10-24 22:36:01
回答 1查看 1.3K关注 0票数 4

我正试图从一个较低的层次来理解ASP.Net MVC。具体来说,我试图了解MVC运行时是如何开始的。对于我最初对调用堆栈/反编译的深入研究,它似乎是由MvcRouteHandler启动的,然后它将构造MvcHandler。然而,我似乎找不到MvcRouteHandler注册的地方。如何将此RouteHandler添加到ASP.Net管道中?

更新

经过进一步的检查,我已经将MvcRouteHandler构造跟踪到了RouteCollectionExtensions类中,该类看起来包含RouteCollection类的扩展。包含构造函数的特定方法具有以下定义:

代码语言:javascript
复制
public static Route MapRoute(this RouteCollection routes, 
                             string name, 
                             string url, 
                             object defaults, 
                             object constraints, 
                             string[] namespaces)

我相信在这一行代码中找到了关键:

代码语言:javascript
复制
Route route = new Route(url, new MvcRouteHandler());

因此,对我来说,这就是分配MvcRouteHandler的地方。整个事件链如下所示:

一切都从Global.asax.cs开始

代码语言:javascript
复制
Application_Start()
RouteConfig.RegisterRoutes
RouteCollectionExtensions.MapRoute(this RouteCollection routes, string name, string url, object defaults)
RouteCollectionExtensions.MapRoute(this RouteCollection routes, string name, string url, object defaults, object constraints)
RouteCollectionExtensions.MapRoute(this RouteCollection routes, string name, string url, object defaults, object constraints, string[] namespaces)

从这里开始,它只是路由匹配的问题,然后导致使用MvcRouteHandler调用MvcHandler并启动整个事件链。因此,我最初假设MvcRouteHandler在某个配置中注册是错误的。相反,它是通过从Application_Start事件开始的global.asax.cs文件中的代码来配置的。

这是正确的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-24 22:54:26

请求通过ASP.net管道,然后被UrlRoutingModule HTTP模块捕获。

更多信息:ASP.NET MVC是如何工作的?

编辑:路由模块安装在您的计算机web.config中,您的站点web.config继承了它。你可以在%systemroot%\Microsoft.NET\Framework\$versionNumber$\CONFIG\Web.config找到它

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13058878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档