加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – asp.net mvc 2控制器如何实例化?

发布时间:2020-12-15 17:42:43 所属栏目:百科 来源:网络整理
导读:当asp.net应用程序被通知URL时,它会将其路由到适当的控制器,特别是适当的方法. 这些控制器是否放置在堆栈一次?还是再次为每个请求实例化? 例如,说我有一个控制器,在一个类的声明中被实例化了一个linq-to-sql类.如果我有n个请求路由到该控制器,我是否生成了
当asp.net应用程序被通知URL时,它会将其路由到适当的控制器,特别是适当的方法.

这些控制器是否放置在堆栈一次?还是再次为每个请求实例化?

例如,说我有一个控制器,在一个类的声明中被实例化了一个linq-to-sql类.如果我有n个请求路由到该控制器,我是否生成了不同的linq-to-sql类对象,每个对象在自己的控制器实例中或只有1个?

我的直觉告诉我,由于线程安全原因,控制人员每个请求产生一个控制器,但是似乎没有比我自己的胃肠道恶魔挖掘更好的指南.

解决方法

默认情况下,它们每次都被DefaultControllerFactory实例化.具体来说,在GetControllerInstance中,
(IController)Activator.CreateInstance(controllerType);

首先调用CreateController,它调用GetControllerType来根据控制器名称和路由数据令牌中传递的Namespaces获取控制器类型.然后它调用GetControllerInstance,它创建一个控制器的实例.

没有比MVC framework source code itself更好的指南.

您可以通过实现IControllerFactory定义您自己的ControllerFactory,然后控制控制器的实例化和何时.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读