コード例 #1
0
ファイル: Global.asax.cs プロジェクト: itverket/geek-retreat
        protected void Application_Error()
        {
            var httpContext = HttpContext.Current;
            if (httpContext == null) return;

            var context = new HttpContextWrapper(System.Web.HttpContext.Current);
            var routeData = RouteTable.Routes.GetRouteData(context);

            var requestContext = new RequestContext(context, routeData);
            /* when the request is ajax the system can automatically handle a mistake with a JSON response. then overwrites the default response */
            if (requestContext.HttpContext.Request.IsAjaxRequest())
            {
                httpContext.Response.Clear();
                var controllerName = requestContext.RouteData.GetRequiredString("controller");
                var factory = ControllerBuilder.Current.GetControllerFactory();
                var controller = factory.CreateController(requestContext, controllerName);
                var controllerContext = new ControllerContext(requestContext, (ControllerBase)controller);

                var jsonResult = new JsonResult
                {
                    Data = new {success = false, serverError = "500"},
                    JsonRequestBehavior = JsonRequestBehavior.AllowGet
                };
                jsonResult.ExecuteResult(controllerContext);
                httpContext.Response.End();
            }
            else
            {
                httpContext.Response.Redirect("~/Error");
            }
        }
コード例 #2
0
        public override void OnException(ExceptionContext exceptionContext)
        {
            base.OnException(exceptionContext);

            logError(exceptionContext);

            // inform elmah
            var httpContext = exceptionContext.HttpContext.ApplicationInstance.Context;
            var signal = ErrorSignal.FromContext(httpContext);
            signal.Raise(exceptionContext.Exception, httpContext);

            // change the result if an ajax request
            var request = exceptionContext.HttpContext.Request;
            if (request.IsAjaxRequest() == false)
                return;

            var jsonDto = new Harbor.UI.Models.InternalServerErrorDto
                {
                    exception = exceptionContext.Exception.Message,
                    exceptionType = exceptionContext.Exception.GetType().FullName
                };
            #if DEBUG
            jsonDto.stackTrace = exceptionContext.Exception.StackTrace;
            #endif
            var jsonResult = new JsonResult {Data = jsonDto, JsonRequestBehavior = JsonRequestBehavior.AllowGet};
            exceptionContext.HttpContext.Response.Clear();
            exceptionContext.Result = jsonResult;
            //exceptionContext.HttpContext.Response.StatusCode = 500;
            exceptionContext.ExceptionHandled = true;
            jsonResult.ExecuteResult(exceptionContext);
            exceptionContext.HttpContext.Response.End();
        }
コード例 #3
0
ファイル: BaseController.cs プロジェクト: jbunzel/MvcRQ_git
 protected override void OnException(ExceptionContext filterContext)
 {
     if (filterContext.HttpContext.IsCustomErrorEnabled || true)  //IsCustomErrorEnabled always false if client is localhost or client and server IPs identical. True set to override.
     {
         filterContext.ExceptionHandled = true;
         // If this is an ajax request, return the exception in the response            
         if (filterContext.HttpContext.Request.IsAjaxRequest())
         {
             //if (HttpContext.Response.ContentType == "text/html")
             //{
             //    filterContext.HttpContext.Response.StatusCode = 500;
             //    var json = new JsonResult();
             //    json.JsonRequestBehavior = JsonRequestBehavior.AllowGet;   //SICHERHEITSPROBLEM: s. http://haacked.com/archive/2009/06/25/json-hijacking.aspx
             //    json.Data = HttpUtility.UrlEncode(filterContext.Exception.Message); // +filterContext.Exception.StackTrace;
             //    json.ExecuteResult(this.ControllerContext);
             //}
             //else
             //{
                 filterContext.HttpContext.Response.StatusCode = 500;
                 var json = new JsonResult();
                 json.JsonRequestBehavior = JsonRequestBehavior.AllowGet;   //SICHERHEITSPROBLEM: s. http://haacked.com/archive/2009/06/25/json-hijacking.aspx
                 json.Data = HttpUtility.UrlEncode(filterContext.Exception.Message); // +filterContext.Exception.StackTrace;
                 json.ExecuteResult(this.ControllerContext);
             //}
         }
         else
         {
             ViewData.Model = new System.Web.Mvc.HandleErrorInfo(filterContext.Exception, "ControllerName", "ActionName");
             // Pass a flag to the view to tell it whether or not to show a the stack trace                
             ViewBag.IsCustomErrorEnabled = true; //filterContext.HttpContext.IsCustomErrorEnabled;
             this.View("Error").ExecuteResult(this.ControllerContext);
         }
     }
 }
コード例 #4
0
ファイル: JsonResponse.cs プロジェクト: rexwhitten/Siege
        public override void Execute(object model, ControllerContext context)
        {
            context.HttpContext = new HttpContextWrapper(HttpContext.Current);
            var result = new JsonResult {Data = model};

            result.ExecuteResult(context);
        }
コード例 #5
0
ファイル: AjaxResult.cs プロジェクト: ielkanyuk/BiBiHelp
        public override void ExecuteResult(ControllerContext context)
        {
            JsonResult result = new JsonResult();

            result.Data = GetResult(context);

            result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            result.ExecuteResult(context);
        }
コード例 #6
0
        protected virtual void RenderAjaxView(HttpRequestBase request, Exception currentError)
        {
            var jsonResult = new JsonResult
                             {
                                 JsonRequestBehavior = JsonRequestBehavior.AllowGet,
                                 Data = new {error_message = GetJsonErrorMessage(request, currentError)}
                             };

            jsonResult.ExecuteResult(NewControllerContext(request));
        }
コード例 #7
0
ファイル: AjaxFormResult.cs プロジェクト: Wipcore/Ecommerce
        public override void ExecuteResult(ControllerContext context)
        {
            var result = new JsonResult
            {
                Data = Data,
                JsonRequestBehavior = JsonRequestBehavior.AllowGet
            };

            result.ExecuteResult(context);
        }
コード例 #8
0
        public override void ExecuteResult(ControllerContext context)
        {
            var jsonResponse = new JsonResult
            {
                Data = this,
                ContentType = "application/json",
                JsonRequestBehavior = JsonRequestBehavior.AllowGet
            };

            jsonResponse.ExecuteResult(context);
        }
 public override void ExecuteResult(ControllerContext context)
 {
     var response = new JsonResponse
                        {
                            FatalErrorUrl = _fatalErrorUrl,
                            ValidationErrorMessage = _validationErrorMessage,
                            Data = _data, Success = string.IsNullOrWhiteSpace(_validationErrorMessage)
                        };
     var json = new JsonResult
     {
         Data = response,
         JsonRequestBehavior = JsonRequestBehavior.AllowGet
     };
     json.ExecuteResult(context);
 }
 public override void OnException(ExceptionContext context)
 {
     if (IsAjaxCall)
     {
         context.ExceptionHandled = true;
         var jsonResult = new JsonResult();
         jsonResult.Data = new {Message = context.Exception.Message , MessageType = "Error"};
         jsonResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
         jsonResult.ExecuteResult(context);
     }
     else
     {
         // if not an ajax request, continue with logic implemented by MVC -> html error page
         base.OnException(context);
     }
 }
コード例 #11
0
        public override void ExecuteResult(ControllerContext context)
        {
            if (context.RequestContext.HttpContext.Request.IsAjaxRequest())
            {
                string destinationUrl = UrlHelper.GenerateContentUrl(Url, context.HttpContext);

                JsonResult result = new JsonResult()
                {
                    Data = new{LoggedOut=true,RedirectUrl = destinationUrl},
                    JsonRequestBehavior = JsonRequestBehavior.AllowGet
                };
                result.ExecuteResult(context);
            }
            else
                base.ExecuteResult(context);
        }
コード例 #12
0
ファイル: DynamicView.cs プロジェクト: basicdays/Guidelines
 public override void ExecuteResult(ControllerContext context)
 {
     var contentType = context.RequestContext.HttpContext.Request.Headers["Accept"];
     if (contentType != null && contentType.Contains("application/json"))
     {
         if (Model is IEnumerable && !(Model is string))
         {
             Model = new CollectionWrapper { Collection = (IEnumerable)Model };
         }
         var result = new JsonResult { Data = Model, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
         result.ExecuteResult(context);
     }
     else
     {
         context.Controller.ViewData.Model = Model;
         var result = new ViewResult { ViewData = context.Controller.ViewData };
         result.ExecuteResult(context);
     }
 }
コード例 #13
0
ファイル: EmailResult.cs プロジェクト: djMax/AlienForce
 public override void ExecuteResult(ControllerContext context)
 {
     var cr = new ContentResult();
     if (Mode == RenderMode.Html)
     {
         cr.ContentType = "text/html";
         cr.Content = mHTML;
     }
     else if (Mode == RenderMode.Text)
     {
         cr.ContentType = "text/plain";
         cr.Content = mText;
     }
     else if (Mode == RenderMode.Json)
     {
         JsonResult jr = new JsonResult();
         jr.Data = new
         {
             mMessage.From,
             mMessage.To,
             mMessage.CC,
             mMessage.Bcc,
             mMessage.Headers,
             mMessage.Priority,
             mMessage.ReplyToList,
             mMessage.Sender,
             mMessage.Subject,
             mMessage.SubjectEncoding
         };
         jr.ExecuteResult(context);
         return;
     }
     else
     {
         new SmtpClient().Send(mMessage);
         if (Mode == RenderMode.SendWithJson)
         {
             var jr = new JsonResult();
             jr.Data = new { success = true };
             jr.ExecuteResult(context);
             return;
         }
         cr.Content = "OK";
     }
     cr.ExecuteResult(context);
 }
        private static void RenderAjaxView(HttpApplication httpApplication, HttpStatusCode httpStatusCode,
                                             Exception currentError)
        {
            // Ok. lets check if this content type contains a request for json.
            string errorMessage = httpApplication.Request.ContentType.Contains("json")
                                       ? currentError.Message
                                       : string.Format(
                                           "An error occured but we are unable to handle the request.ContentType [{0}]. Anyways, the error is: {1}",
                                           httpApplication.Request.ContentType,
                                           currentError.Message);
            

            var errorController = new FakeErrorController();
            var controllerContext =
                new ControllerContext(httpApplication.Context.Request.RequestContext, errorController);
            var jsonResult = new JsonResult
            {
                JsonRequestBehavior = JsonRequestBehavior.AllowGet,
                Data = new
                {
                    error_message = errorMessage
                }
            };
            jsonResult.ExecuteResult(controllerContext);

            // Lets make sure we set the correct Error Status code :)
            httpApplication.Response.StatusCode = (int) httpStatusCode;
        }
コード例 #15
0
        /// <summary>
        /// 执行
        /// </summary>
        /// <param name="context"></param>
        public override void ExecuteResult(ControllerContext context)
        {
            var model = new
            {
                status = Status,
                message = Message,
                data = Data,
                url = Url
            };

            var result = new JsonResult
            {
                Data = model,
                JsonRequestBehavior = JsonRequestBehavior.AllowGet,
                MaxJsonLength = 104857600  //100MB
            };

            result.ExecuteResult(context);
        }
コード例 #16
0
 public override void ExecuteResult(ControllerContext context)
 {
     JsonResult innerAction = new JsonResult { Data = this.Data };
     innerAction.ExecuteResult(context);
 }