ControllerFactory
ASPNET MVC为Controller的激活定义相应的工厂我们将其统称为ControllerFactory所有的ControllerFactory实现了接口SystemWebMvcIControllerFactory接口如下面的代码片段所示Controller对象的激活最终通过IControllerFactory的CreateController方法来完成该方法的两个参数分别表示当前请求上下文和从路由信息中获取的Controller的名称
public interface IControllerFactory
{
IController CreateController(RequestContext requestContext
string controllerName)
SessionStateBehavior GetControllerSessionBehavior(
RequestContext requestContext string controllerName)
void ReleaseController(IController controller)
}
public enum SessionStateBehavior
{
Default
Required
ReadOnly
Disabled
}
除了负责创建Controller处理请求之外ControllerFactory还需要在完成请求处理之后释放Controller对激活Controller对象的释放定义在ReleaseController方法中IControllerFactory的另一个方法GetControllerSessionBehavior返回一个SystemWebSessionStateSession StateBehavior枚举熟悉ASPNET的读者对SessionStateBehavior应该不会感到陌生它用于表示请求处理过程中会话状态支持的模式它的四个枚举值分别具有如下的含义
Default:使用默认 ASPNET 逻辑来确定请求的会话状态行为
Required:为请求启用完全的读写会话状态行为
ReadOnly:为请求启用只读会话状态
Disabled:禁用会话状态
[] []