Я пытаюсь создать промежуточное программное обеспечение для обработки исключений, но оно работает не так, как мне нужно.Мне нужно получить исключение, которое может быть выдано из любой точки системы, затем промежуточное ПО получит исключение, а затем вернет сообщение об исключении и код http клиенту в качестве ответа.Когда я отлаживаю, точка останова попадает на промежуточное ПО, и я вижу сообщение об исключении, но сообщение и код не возвращаются клиенту.
Это код:
public class ErrorDto
{
public int StatusCode { get; set; }
public string Message { get; set; }
public override string ToString()
{
return JsonConvert.SerializeObject(this);
}
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
app.UseCors("Dev");
else
app.UseHsts();
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseHttpsRedirection();
app.UseExceptionHandler(errorApp =>
{
errorApp.Run(async context =>
{
context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
context.Response.ContentType = "application/json";
var error = context.Features.Get<IExceptionHandlerFeature>();
if (error != null)
{
var ex = error.Error;
await context.Response.WriteAsync(new ErrorDto()
{
StatusCode = context.Response.StatusCode,
Message = ex.Message
}.ToString(), Encoding.UTF8);
}
});
});
app.UseMvc(opts =>
{
opts.MapRoute(
name: "default",
template: "api/{controller}/{action}/{id?}");
});
}