【问题标题】:asp.net web api - action filter - cannot access posted json object from request objectasp.net web api - 操作过滤器 - 无法从请求对象访问发布的 json 对象
【发布时间】:2013-09-11 05:08:49
【问题描述】:

在 asp.net web api 中,我们可以使用操作过滤器 [ValidateModel] 进行日志记录: 如果由于在预期小数时发送字符串而导致绑定错误,则从对操作方法参数(例如汽车对象)的请求中记录 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) {
//}

【问题讨论】:

    标签: asp.net-web-api


    【解决方案1】:

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

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

    【讨论】:

    • 我不认为绑定错误可以作为异常捕获。我希望能够以通用方式记录动作方法的参数,以便在动作过滤器到达动作方法之前进行跟踪,问题是我无法从那里访问内容,谢谢
    猜你喜欢
    • 2018-03-09
    • 2016-06-05
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 2015-01-15
    • 1970-01-01
    相关资源
    最近更新 更多