ASP.NET Core逐步升级所有层的错误

时间:2019-02-23 17:25:03

标签: asp.net error-handling core

我有一个包含前端Web门户的应用程序,该应用程序调用后端的API应用程序。该API调用一些业务服务层(类库),该业务服务层又连接到数据库。

我遇到的问题是将错误从底层数据库一直升级到Web门户:db =>类库=> api => web。我想在Web门户上接收特定的err消息,无论它发生在什么地方。

当前,如果错误发生在门户网站本身,那么没问题,门户网站将显示该错误。但是,如果是类库层,那么我会从api层收到通用api错误。

我试图像这样在API层中使用全局错误处理中间件:

-spec hello(list(string()), integer()) -> list(string()).

1> hello:limit_word(["Hello", "there my friend", "wassup!"],10).                                      
["Hello"]
2> hello:limit_word(["Hello", "there my friend", "wassup!"],22). 
["Hello", "there my friend"]

我这样注册它:

 public async Task Invoke(HttpContext context)
    {
        context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;

        var ex = context.Features.Get<IExceptionHandlerFeature>()?.Error;
        if (ex == null) return;

        var error = new
        {
            message = ex.Message
        };

        context.Response.ContentType = "application/json";

        using (var writer = new StreamWriter(context.Response.Body))
        {
            new JsonSerializer().Serialize(writer, error);
            await writer.FlushAsync().ConfigureAwait(false);
        }
    }

但是,这不能捕获特定的类库错误。

任何有关如何处理此问题的建议都将受到赞赏。

0 个答案:

没有答案