在我的应用程序中,我正在抛出一个自定义异常。我的中间件将捕获该异常,并使用正确的状态代码和有用的错误响应发回响应
public HttpStatusCodeExceptionMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext httpContext)
{
try
{
await _next(httpContext);
}
catch(HttpStatusCodeException ex)
{
httpContext.Response.Clear();
httpContext.Response.StatusCode = ex.StatusCode;
httpContext.Response.ContentType = ex.ContentType;
// write to response body
var errorObj = new { ErrorCode = ex.ErrorCode, Message = ex.Message };
var serializedJsonError = JsonConvert.SerializeObject(errorObj);
await httpContext.Response.WriteAsync(serializedJsonError);
}
}
这很好用,我可以看到网络请求中的响应以及状态代码。问题是我的前端应用程序(角度)没有看到catch块中的任何细节,因为我认为它在技术上不是一个例外。
我知道我可以做一些像ex.Data.Add(“Mykey”,“myValue”)这样的异常,但实际上没有返回异常对象;当我检查异常时,我可以看到所有值都是空的,并且由于状态代码,它可能只是显示为错误。
我该怎么做才能包含这些信息,以便我的前端应用可以查看详细信息?
这就是我目前要回来的:
{
"data":null,
"status":-1,
"config":{
"method":"DELETE",
"transformRequest":[
null
],
"transformResponse":[
null
],
"jsonpCallbackParam":"callback",
"headers":{
"Authorization":"Bearer REDACTED",
"Accept":"application/json, text/plain, */*"
},
"url":"https://7ec106dd.ngrok.io/api/Cenpos/RecurringTokens/s"
},
"statusText":"",
"xhrStatus":"error"
}
您正在使用Clear(),这将阻止设置其他值。
(抱歉,简短的回答;我在移动设备上)