asp.net web api - 动作过滤器 - 无法从请求对象访问已发布的json对象

时间:2013-09-07 02:06:53

标签: asp.net-web-api

在asp.net web api中,我们可以使用动作过滤器[ValidateModel]进行日志记录: 如果由于在预期的小数时发送字符串而存在绑定错误,则记录来自action方法参数(例如car对象)的请求的json字符串将是有用的。 在这些情况下,汽车对象为空。

问题 - 无法从请求对象

访问已发布的json对象
//var car = actionContext.Request.Content.ReadAsStringAsync().Result;

//var car2 = actionContext.ControllerContext.Request.Content.ReadAsStringAsync().Result;

如何在Action Filter属性ValidateModel中获取Car参数的json字符串? 说方法:

//[ValidateModel]
  //public HttpResponseMessage Post_Car(Car car) {
//}

1 个答案:

答案 0 :(得分:0)

据我了解您的问题,您希望在出现绑定错误时记录请求。绑定错误有些异常,因此您可以处理控制器或操作的异常。为此,您需要使用ExceptionFilterAttribute。以下示例:

public class ExceptionHandlingAttribute : ExceptionFilterAttribute
{
    public override void OnException(HttpActionExecutedContext actionExecutedContext)
    {
        string content = actionExecutedContext.Request.Content.ReadAsStringAsync().Result;

        ///LOGGING ACTIONS

        base.OnException(actionExecutedContext);
    }
}