nou*_*our 1 c# asp.net-core asp.net-core-webapi
我正在使用库Microsoft.AspNetCore.Http和Microsoft.AspNetCore.Mvc. 我还使用 Identity 的 JWT 令牌。
当令牌过期时,API 会抛出 http 401 错误,如果声明错误,则会返回 http 403 错误。
我需要能够捕获这两个雕像并将它们包装在我的统一错误消息格式中
public class ErrorMessage
{
public int httpStatus { get; set; }
public string Header { get; set; } = "Error";
public string Message { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的标准 API 格式
[Authorize]
[HttpPost]
[Route("Logout")]
public async Task<IActionResult> Logout()
{
try
{
....
}
catch (Exception e)
{
_logger.LogError($"Error in {nameof(Login)}: {e}");
return BadRequest(new ErrorMessage { httpStatus = 500, Message = e.Message });
}
}
Run Code Online (Sandbox Code Playgroud)
根据ASP.NET Core 中的处理错误,您可以使用UseStatusCodePages:
app.UseStatusCodePages(async statusCodeContext =>
{
switch (statusCodeContext.HttpContext.Response.StatusCode)
{
case 401:
statusCodeContext.HttpContext.Response.StatusCode = 400;
await statusCodeContext.HttpContext.Response.WriteAsJsonAsync(new ErrorMessage { httpStatus = 500, Message = "some message" });
break;
case 403:
statusCodeContext.HttpContext.Response.StatusCode = 400;
await statusCodeContext.HttpContext.Response.WriteAsJsonAsync(new ErrorMessage { httpStatus = 500, Message = "some message" });
break;
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3038 次 |
| 最近记录: |