在 IExceptionFilter 中访问 ActionArguments
Access ActionArguments in IExceptionFilter
是否可以在 IExceptionFilter
中访问 ActionArguments
?
根据上面的图片,异常过滤器 运行 在可以访问它们的操作过滤器之后。所以我不明白他们为什么不能。
在 ActionFilter 中,您可以像这样访问它
public class MyFilter : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
context.ActionArguments // I need access to this in order to find out what type the input argument(s) was.
}
}
但是 IExceptionFilter 使用 public void OnException(ExceptionContext context)
。
我想通了:)
public class ExceptionFilter : IExceptionFilter, IActionFilter
{
private IDictionary<string, object> _actionArguments;
public void OnException(ExceptionContext context)
{
_actionArguments // great success!
}
public void OnActionExecuting(ActionExecutingContext context)
{
_actionArguments = context.ActionArguments;
}
public void OnActionExecuted(ActionExecutedContext context)
{
// do nothing
}
}
是否可以在 IExceptionFilter
中访问 ActionArguments
?
根据上面的图片,异常过滤器 运行 在可以访问它们的操作过滤器之后。所以我不明白他们为什么不能。
在 ActionFilter 中,您可以像这样访问它
public class MyFilter : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
context.ActionArguments // I need access to this in order to find out what type the input argument(s) was.
}
}
但是 IExceptionFilter 使用 public void OnException(ExceptionContext context)
。
我想通了:)
public class ExceptionFilter : IExceptionFilter, IActionFilter
{
private IDictionary<string, object> _actionArguments;
public void OnException(ExceptionContext context)
{
_actionArguments // great success!
}
public void OnActionExecuting(ActionExecutingContext context)
{
_actionArguments = context.ActionArguments;
}
public void OnActionExecuted(ActionExecutedContext context)
{
// do nothing
}
}