コード例 #1
0
ファイル: Global.asax.cs プロジェクト: crazyants/ZidiumServer
        protected void Application_Error(object sender, EventArgs args)
        {
            try
            {
                var exception = Server.GetLastError();
                var request   = new HttpRequestWrapper(HttpContext.Current.Request);
                var isAjax    = request.IsAjaxRequest();

                var httpException = exception as HttpException;
                if (httpException != null)
                {
                    if (httpException.GetHttpCode() == 404)
                    {
                        if (!isAjax)
                        {
                            using (var controller = new HomeController())
                            {
                                var controllerContext = new ControllerContext(HttpContext.Current.Request.RequestContext, controller);
                                var result            = new ViewResult
                                {
                                    ViewName = "~/Views/Errors/Error404.cshtml"
                                };
                                result.ExecuteResult(controllerContext);
                                HttpContext.Current.Response.End();
                            }

                            return;
                        }
                    }
                }

                if (isAjax && request.IsSmartBlocksRequest())
                {
                    HandleException(exception);

                    using (var controller = new HomeController())
                    {
                        var controllerContext = new ControllerContext(HttpContext.Current.Request.RequestContext, controller);
                        var result            = controller.GetErrorJsonResponse(exception);
                        result.ExecuteResult(controllerContext);
                        HttpContext.Current.Response.End();
                    }

                    return;
                }

                HandleException(exception);

                using (var controller = new HomeController())
                {
                    var controllerContext = new ControllerContext(HttpContext.Current.Request.RequestContext, controller);
                    var result            = new ViewResult
                    {
                        ViewName = "~/Views/Errors/Error.cshtml",
                        ViewData =
                        {
                            Model         = new ErrorModel()
                            {
                                Exception = exception,
                                IsAjax    = isAjax
                            }
                        }
                    };
                    result.ExecuteResult(controllerContext);
                    HttpContext.Current.Response.End();
                }
            }
            catch (Exception exception)
            {
                LogManager.GetCurrentClassLogger().Fatal(exception);
            }
        }