我正在尝试为用ASP.Net Core编写的Web API创建一个全局异常处理属性,并且我正在使用IAsyncActionFilter
接口来做到这一点。我正在调用ActionExecutionDelegate,然后检查其结果中是否有异常。当我遇到异常时,我然后尝试重定向结果或手动写入HttpResponse,这就是我面临的实际问题。给出以下示例:
var resultContext = await next();
在此代码失败后尝试更改响应的任何代码。我尝试了以下方法:
resultContext.Result = new ContentResult() {...}
resultContext.HttpContext.Response.WriteAsync(.....)
出于好奇,我还试图在执行操作之前对操作的上下文进行相同的操作,但正如预期的那样,它也失败了。
如果您需要了解OnActionExecutionAsync
方法的实际方法签名,如下所示:
Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)