好的,我为这个问题道歉。我真的不知道怎么回答。
我们的Web Api中有一个自定义调度程序,允许我们根据标题中嵌入的版本号选择不同的控制器。我们面临的问题是框架中默默处理此类中抛出的异常。相反,我们可以捕获异常并尝试处理它,但由于没有明显的方法来修改此级别的默认响应,所以我们的所有处理都会被忽略。
我们目前正在寻求的解决方法基本上是利用我们在抛出此异常时正在选择控制器的事实,因此我们希望捕获该异常并向其发送一个控制器以进行重新抛出这样我们的错误过滤器就可以捕获它。听起来很奇怪,但这就是我们正在努力的方式。我现在正在处理的问题,我已经选择了我创建的重新抛出的ExceptionController,但是我不确定如何将异常对象发送到此控制器。这是catch块的一个例子:
catch(Exception ex)
{
var routeValues = request.GetRouteData().Values;
routeValues["controller"] = "Exception";
routeValues["action"] = "Exception";
controllerDescriptor = new HttpControllerDescriptor(_config, "exceptionController", typeof(ExceptionController));
}
return controllerDescriptor;
控制器方法具有以下签名:
[HttpPost]
public void Exception(Exception ex)
我的第一直觉是修改请求体,它是HttpRequestMessage类型但我无法弄清楚如何做到这一点。我应该能够在调用ExceptionController之前修改该请求。
所以我想问题是,如何修改请求对象以给它提供异常对象,还是有另一种方法可以解决这个问题?
TIA