.net Core API异常信息返回处理

前言

C#中咱们若是操做过程当中出现错误一胜败都用throw抛出异常,而后前端接收到后会直接显示出来服务端抛出的异常是什么。前端


先看一下未修改前的使用效果android

咱们直接在.net Core的API里设置校验的通信时间和签名,若是不对直接抛出异常。微信

C# .net Core的代码
app


Android的代码的显示效果async

在android中咱们直接看到i当rsp.body()返回的是空,咱们就直接捕获到错误的信息显示出来spa

看看运行的时候效果.net

能够看到已经出来异常了,可是显示注册失败后面一串XML的信息,3d

在服务端抛的异常是blog

utf-8

并非咱们想到的结果,我也看不出来究竟是什么缘由,错误出如今哪。遇到空上的状况咱们应该怎么处理呢


修改服务端代码

若是想要实现服务端抛出的异常在前端能接收到,咱们须要在服务端进行修改。在.net Core里面Startup.cs文件里的Configure进行处理一下

能够看到,原来的处理里面经过app.UseExceptionHandler直接就跳转到一个错误页面,因此也形成了接收到的数据是一些XML的数据。咱们如今把这里改造一下。

咱们先把这上面这一段屏蔽了

而后从新写一个app.UserExeceptionHandler

            app.UseExceptionHandler(t =>
            {
                t.Run(async context =>
                {
                    var ex = context.Features.Get<IExceptionHandlerFeature>()?.Error;
                    string msg = ex == null ? "发生错误。" : ex.Message;
                    context.Response.ContentType = "text/plain;charset=utf-8";
                    await context.Response.WriteAsync(msg);
                });
            });

而后咱们从新编译和发布一下


咱们再次用android程序调用一下,看看

能够看出来,上面抛出的异常信息已经能够在前端接收到显示出来了。





-END-

长按下方二维码关注




本文分享自微信公众号 - 微卡智享(VaccaeShare)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。