public DirectMethod GetMethod(string actionName, string methodName) { DirectMethod method = null; DirectAction action = GetAction(actionName); if (action != null) { method = action.GetMethod(methodName); } return(method); }
private void ExecuteRequest(RequestContext requestContext, DirectRequest request) { if (request == null) { throw new ArgumentNullException("request", DirectResources.Common_DirectRequestIsNull); } HttpContextBase httpContext = requestContext.HttpContext; RouteData routeData = requestContext.RouteData; routeData.Values["controller"] = request.Action; routeData.Values["action"] = request.Method; httpContext.Items[DirectRequest.DirectRequestKey] = request; var controller = (Controller)_factory.CreateController(requestContext, request.Action); DirectAction action = GetAction(request.Action); if (action == null) { throw new NullReferenceException(String.Format(DirectResources.DirectProvider_ActionNotFound, request.Action)); } DirectMethod method = action.GetMethod(request.Method); if (method == null) { throw new NullReferenceException(String.Format(DirectResources.DirectProvider_MethodNotFound, request.Method, action.Name)); } if (!method.IsFormHandler && method.Params == null) { if (request.Data == null && method.Len > 0 || request.Data != null && request.Data.Length != method.Len) { throw new ArgumentException(String.Format(DirectResources.DirectProvider_WrongNumberOfArguments, request.Method, request.Action)); } } try { controller.ActionInvoker = new DirectMethodInvoker(); (controller as IController).Execute(requestContext); } catch (DirectException exception) { var errorResponse = new DirectErrorResponse(request, exception); errorResponse.Write(httpContext.Response); } finally { _factory.ReleaseController(controller); } httpContext.Items.Remove(DirectRequest.DirectRequestKey); }