private ActionResult ExecuteControllerAction(IPortalContext context, IController controller) { string actionName = context.Request.ActionName.ToUpper(CultureInfo.InvariantCulture); Dictionary <string, ControllerActionData> actionDataList = actionDataListInitializer.Value; if (actionDataList.ContainsKey(actionName)) { ControllerActionData actionData = actionDataList[actionName]; IHttpRequest httpRequest = context.HttpContext.Request; if (actionData.Secure && (!RequiredRequestType.Equals(httpRequest.RequestType, StringComparison.OrdinalIgnoreCase) || !RequiredContentType.Equals(httpRequest.ContentType, StringComparison.OrdinalIgnoreCase))) { WriteJsonServerException("Invalid Request", context.HttpContext); } try { ActionResult action = actionData.CallMethod(controller, serializer, context.HttpContext.Request.InputStream, context.Request.Tokens); if (action == null) { throw new ControllerResultException("Controller did not return an ActionResult."); } action.ViewPaths = BaseViewVirtualPaths.ToArray(); return(action); } catch (Exception ex) { if (actionData.Secure) #if DEBUG { string message = ex.Message; if (ex.InnerException != null) { message += " " + ex.InnerException.Message; } WriteJsonServerException(message, context.HttpContext); } #endif #if !DEBUG { WriteJsonServerException(ex.Message, context.HttpContext); } #endif { else { throw; } }