本文整理汇总了C#中IControllerFactory.CreateController方法的典型用法代码示例。如果您正苦于以下问题:C# IControllerFactory.CreateController方法的具体用法?C# IControllerFactory.CreateController怎么用?C# IControllerFactory.CreateController使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IControllerFactory
的用法示例。
在下文中一共展示了IControllerFactory.CreateController方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: BeginProcessRequest
// IHttpAsyncHandler members
public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback asyncCallback, object extraData)
{
IAsyncResult result = null;
// Get the controller type
string controllerName = _requestContext.RouteData.GetRequiredString("controller");
// Obtain an instance of the controller
_factory = ControllerBuilder.Current.GetControllerFactory();
var controller = _factory.CreateController(_requestContext, controllerName) as ControllerBase;
if (controller == null)
throw new InvalidOperationException("Can't locate the controller " + controllerName);
try
{
_asyncController = controller as AsyncController;
if (_asyncController == null)
throw new InvalidOperationException("Controller isn't an AsyncController.");
// Set up asynchronous processing
_httpContext = HttpContext.Current; // Save this for later
result = _asyncController.Execute(_requestContext, asyncCallback);
}
finally
{
if (result == null || result.CompletedSynchronously)
{
this._factory.ReleaseController(controller);
}
}
return result;
}
示例2: CreateController
internal IController CreateController(IControllerFactory controllerFactory, RequestContext requestContext, string controllerName)
{
try
{
return controllerFactory.CreateController(requestContext, controllerName);
}
catch (HttpException ex)
{
if (ex.GetHttpCode() == 404)
{
return null;
}
throw;
}
}
示例3: ProcessRequestInit
/// <summary>
/// 通过Http上下文对象创建对应的controller工厂和controller
/// </summary>
/// <param name="httpContext">封装的Http上下文</param>
/// <param name="controller">返回当前请求的controller实例</param>
/// <param name="factory">返回controller工厂实例</param>
private void ProcessRequestInit(HttpContextBase httpContext, out IController controller, out IControllerFactory factory)
{
// If request validation has already been enabled, make it lazy. This allows attributes like [HttpPost] (which looks
// at Request.Form) to work correctly without triggering full validation.
// Tolerate null HttpContext for testing.
HttpContext currentContext = HttpContext.Current;
if (currentContext != null)
{
bool? isRequestValidationEnabled = ValidationUtility.IsValidationEnabled(currentContext);
if (isRequestValidationEnabled == true)
{
ValidationUtility.EnableDynamicValidation(currentContext);
}
}
// 在响应头中返回MVC的版本号信息 如:X-AspNetMvc-Version 5.0
AddVersionHeader(httpContext);
// 移除路由数据中的可选项Optional
RemoveOptionalRoutingParameters();
// 获取当前请求的控制器名称
// Get the controller type
string controllerName = RequestContext.RouteData.GetRequiredString("controller");
// 通过工厂创建controller的实例
// Instantiate the controller and call Execute
factory = ControllerBuilder.GetControllerFactory();
controller = factory.CreateController(RequestContext, controllerName);
if (controller == null)
{
throw new InvalidOperationException(
String.Format(
CultureInfo.CurrentCulture,
MvcResources.ControllerBuilder_FactoryReturnedNull,
factory.GetType(),
controllerName));
}
}
示例4: ProcessRequestInit
private void ProcessRequestInit(HttpContextBase httpContext, out IController controller, out IControllerFactory factory)
{
AddVersionHeader(httpContext);
RemoveOptionalRoutingParameters();
// Get the controller type
string controllerName = RequestContext.RouteData.GetRequiredString("controller");
// Instantiate the controller and call Execute
factory = ControllerBuilder.GetControllerFactory();
controller = factory.CreateController(RequestContext, controllerName);
if (controller == null) {
throw new InvalidOperationException(
String.Format(
CultureInfo.CurrentUICulture,
MvcResources.ControllerBuilder_FactoryReturnedNull,
factory.GetType(),
controllerName));
}
}
示例5: CreateController
/// <summary>
/// Creates a controller using the controller factory
/// </summary>
private static ControllerBase CreateController(ControllerContext context, IControllerFactory factory, RouteDefinition routeDef)
{
var controller = factory.CreateController(context.RequestContext, routeDef.ControllerName) as ControllerBase;
if (controller == null)
throw new InvalidOperationException("Could not create controller with name " + routeDef.ControllerName + ".");
return controller;
}
示例6: DispatchRequest
/// <summary>
/// Dispatches the request.
/// </summary>
/// <param name="controllerFactory">The controller factory.</param>
/// <param name="controller">The controller.</param>
/// <param name="action">The action.</param>
private void DispatchRequest(IControllerFactory controllerFactory, string controller, string action)
{
var route = GetRoute(controller, action);
_requestContext.RouteData.Values["x-action"] = action;
_requestContext.RouteData.Values["x-controller"] = controller;
if (route != null)
{
_requestContext.RouteData.Values["controller"] = route.Controller;
_requestContext.RouteData.Values["action"] = route.Action;
if (route.Area != string.Empty)
{
_requestContext.RouteData.DataTokens["area"] = route.Area;
}
controller = route.Controller;
}
else
{
_requestContext.RouteData.Values["action"] = _configuration.DefaultAction;
controller = _configuration.DefaultController;
}
var viewController = controllerFactory.CreateController(_requestContext, controller);
if (viewController != null)
{
viewController.Execute(_requestContext);
}
}
示例7: TryCreateController
protected virtual bool TryCreateController(RequestContext requestContext, string controllerName, IControllerFactory controllerFactory, out ControllerBase controller)
{
controller = null;
if (controllerFactory != null)
{
try
{
controller = controllerFactory.CreateController(requestContext, controllerName) as ControllerBase;
if (controller != null)
return true;
}
catch
{
return false;
}
}
return false;
}