.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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索