private JsonResult JsonResultWithValidationErrors(BaseValidationViewModel response) { if (response == null) { return(JsonResultWithValidationErrors(new BaseValidationViewModel())); } if (!ModelState.IsValid) { response.Errors = ModelState.Values.SelectMany(ms => ms.Errors).Select(me => me.ErrorMessage); } response.Success = (response.Errors == null); return(new JsonResult(response, new JsonSerializerSettings { Formatting = Formatting.Indented })); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseHsts(hsts => hsts.MaxAge(days: 365).IncludeSubdomains().Preload()); app.UseXContentTypeOptions(); app.UseReferrerPolicy(opts => opts.NoReferrer()); app.UseCsp(opts => opts .DefaultSources(s => s.Self()) .BlockAllMixedContent() ); app.UseXXssProtection(options => options.EnabledWithBlockMode()); app.UseXfo(xfo => xfo.Deny()); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler(builder => { builder.Run(async context => { context.Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError; context.Response.ContentType = "application/json"; var error = context.Features.Get <IExceptionHandlerFeature>(); if (error != null) { var validation = new BaseValidationViewModel(); validation.Errors = new[] { error.Error.Message }; await context.Response.WriteAsync(JsonConvert.SerializeObject(validation)).ConfigureAwait(false); } }); }); } app.UseAuthentication(); app.UseMvc(); }