Пример #1
0
        /// <summary>
        /// 集約エラー
        /// </summary>
        /// <param name="sender">イベントセンダー</param>
        /// <param name="e">イベント引数</param>
        protected void Application_Error(object sender, EventArgs e)
        {
            this.MyApplication_Error(sender, e);

            var ex = Server.GetLastError();

            if (ex == null)
            {
                return;
            }

            var        messageSvc = DI.Container.Resolve <MessageService>();
            ErrorModel model      = null;

            //認証エラー
            model = ErrorModel.Create(messageSvc, GetException <TemplateAuthorizeException>(ex));
            if (model == null)
            {
                //検証エラー
                model = ErrorModel.Create(messageSvc, GetException <TemplateValidationException>(ex));
            }
            if (!string.IsNullOrEmpty(model?.Controller))
            {
                Response.RedirectToRoute(model);
            }
            if (model != null)
            {
                Server.ClearError();
            }
        }
Пример #2
0
        public static ErrorResult BuildErrorResponse(
            HttpStatusCode statusCode,
            string message,
            string description,
            Exception ex             = null,
            string additionalInfoUrl = null)
        {
            var errorResponse = new ErrorResponse
            {
                Errors = new List <ErrorModel>
                {
                    ErrorModel.Create(statusCode, message, description, ex, additionalInfoUrl)
                }
            };

            return(new ErrorResult((int)statusCode, errorResponse));
        }
        private async Task HandleExceptionAsync(HttpContext context, Exception exception)
        {
            string response = null;

            if (exception is OperationCanceledException)
            {
                _logger.LogDebug(exception, "Request was cancelled.");
                return;
            }
            if (exception is CoinNotExistsException)
            {
                _logger.LogError(exception, "Coin does not exist");
                context.Response.StatusCode = (int)HttpStatusCode.NotFound;
                response = JsonConvert.SerializeObject(ErrorModel.Create(exception.Message));
            }
            else
            {
                _logger.LogError(exception, "Something really bad occurred. We shouldn't ever return 500.");
                context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                response = JsonConvert.SerializeObject(ErrorModel.Create("Internal server error"));
            }

            await context.Response.WriteAsync(response);
        }