ASP.NET Core - обработка исключений не работает - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь создать промежуточное программное обеспечение для обработки исключений, но оно работает не так, как мне нужно.Мне нужно получить исключение, которое может быть выдано из любой точки системы, затем промежуточное ПО получит исключение, а затем вернет сообщение об исключении и код 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?}");
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...