【app.UseExceptionHandler】【response.EnsureSuccessStatusCode】

299 阅读1分钟

错误处理 中间件

  • 位置需要注意,需在UseMvc之前
app.UseExceptionHandler(c => c.Run(async context =>
{
    var exception = context.Features
        .Get<IExceptionHandlerPathFeature>()
        .Error;
    var response = new { error = exception.Message };
    await context.Response.WriteAsJsonAsync(response);
}));
app.UseMvc(); // or .UseRouting() or .UseEndpoints()

EnsureSuccessStatusCode()

  • 当不想以任何特定方式处理失败情况时,惯用用法是用EnsureSuccessStatusCode()简洁地验证请求是否成功。
  • 当想快速制作客户端原型时,这尤其有用。
var response = await client.GetAsync(...);
try
{
    response.EnsureSuccessStatusCode();
    // Handle success
}
catch (HttpRequestException)
{
    // Handle failure
}
var response = await client.GetAsync(...);
if (response.IsSuccessStatusCode)
{
    // Handle success
}
else
{
    // Handle failure
}