一、Asp.Net MVC是否针对每次请求都重新创建一个控制器实例
默认情况下,答案是确定的。
ControllerBuilder类 ControllerBuilder.Current用户获取默认的控制器工厂DefaultControllerFactory
// // 摘要: // 表示默认情况下已注册的控制器工厂。 public class DefaultControllerFactory : IControllerFactory
获取方式
IControllerFactory factory = ControllerBuilder.Current.GetControllerFactory();
IControllerFactory用户创建和释放Controller
namespace System.Web.Mvc { // // 摘要: // 定义控制器工厂所需的方法。 public interface IControllerFactory { // // 摘要: // 使用指定的请求上下文来创建指定的控制器。 // // 参数: // requestContext: // 请求上下文。 // // controllerName: // 控制器的名称。 // // 返回结果: // 控制器。 IController CreateController(RequestContext requestContext, string controllerName); // // 摘要: // 获取控制器的会话行为。 // // 参数: // requestContext: // 请求上下文。 // // controllerName: // 你想要获取器其会话行为的控制器的名称。 // // 返回结果: // 控制器的会话行为。 SessionStateBehavior GetControllerSessionBehavior(RequestContext requestContext, string controllerName); // // 摘要: // 释放指定的控制器。 // // 参数: // controller: // 控制器。 void ReleaseController(IController controller); } }