public class ExceptionMiddleware
{
private readonly RequestDelegate _next;
public ExceptionMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext httpContext)
{
try
{
await _next(httpContext);
}
catch (Exception ex)
{
HandleExceptionAsync(httpContext, ex);
}
}
private static void HandleExceptionAsync(HttpContext context, Exception exception)
{
if (exception is BadHttpRequestException badRequestException && badRequestException.Message == "Request body too large.")
{
context.Response.StatusCode = (int) HttpStatusCode.RequestEntityTooLarge;
}
}
}
在配置中注册启动.cs:
public void Configure(IApplicationBuilder app)
{
...
app.UseMiddleware<ExceptionMiddleware>();
...
}
作为替代,您也可以使用
Exception filter