public IController CreateController(RequestContext requestContext, string controllerName) { IController ic = _inner.CreateController(requestContext, controllerName); Controller c = ic as Controller; if (c != null && WebApiEnabledAttribute.IsDefined(c)) { IActionInvoker iai = c.ActionInvoker; ControllerActionInvoker cai = iai as ControllerActionInvoker; if (cai != null) { c.ActionInvoker = new ResourceControllerActionInvoker(); string actionName = requestContext.RouteData.Values["action"] as string; if (String.IsNullOrEmpty(actionName)) { // set it to a well known dummy value to avoid not having an action as that would prevent the fixup // code in ResourceControllerActionInvoker, which is based on ActionDescriptor, from running requestContext.RouteData.Values["action"] = RestActionToken; } } } return(ic); }
internal static bool TryGetErrorResult2(RequestContext requestContext, HttpException he, out ResourceErrorActionResult actionResult) { foreach (ContentType responseFormat in requestContext.GetResponseFormats()) { WebApiEnabledAttribute dummy = new WebApiEnabledAttribute(); if (dummy.TryGetErrorResult(he, responseFormat, out actionResult)) { return true; } } actionResult = null; return false; }
internal static bool TryGetErrorResult2(RequestContext requestContext, HttpException he, out ResourceErrorActionResult actionResult) { List<ContentType> responseFormats = requestContext.GetResponseFormats(); for (int i = 0; i < responseFormats.Count; ++i) { ContentType responseFormat = responseFormats[i]; WebApiEnabledAttribute dummy = new WebApiEnabledAttribute(); if (dummy.TryGetErrorResult(he, responseFormat, out actionResult)) { return true; } } actionResult = null; return false; }