public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { if (!context.ModelState.IsValid) { //Log Context _logger.Debug(OpenApiErrorCodes.InvalidModelState, context.JsonSerialize()); var openapiErrorResult = new OpenApiErrorResult(); openapiErrorResult.StatusCode = OpenApiErrorCodes.InvalidModelState.ToString(); openapiErrorResult.StatusMessage = OpenApiErrorCodes.InvalidModelState.GetDescription(); openapiErrorResult.ValidationResult = context.ModelState; context.Result = new BadRequestObjectResult(context.ModelState); return; } await next(); }
/// <summary> /// This method will automatically trigger when any exception occurs in application level. /// </summary> /// <param name="context"></param> public void OnException(ExceptionContext context) { HttpStatusCode statusCode = (context.Exception as WebException != null && ((HttpWebResponse)(context.Exception as WebException).Response) != null) ? ((HttpWebResponse)(context.Exception as WebException).Response).StatusCode : GetErrorCode(context.Exception.GetType()); string errorMessage = context.Exception.Message; string stackTrace = context.Exception.StackTrace; HttpResponse response = context.HttpContext.Response; response.StatusCode = (int)statusCode; response.ContentType = "application/json"; OpenApiErrorResult openApiErrorResult = new OpenApiErrorResult(); openApiErrorResult.StatusMessage = errorMessage; openApiErrorResult.StatusCode = statusCode.ToString(); string httpJson = openApiErrorResult.JsonSerialize(); response.ContentLength = httpJson.Length; response.WriteAsync(httpJson); }