C# WebAPI-接受无效的JSON

C# WebAPI-接受无效的JSON,c#,json,asp.net-web-api,C#,Json,Asp.net Web Api,我用一个类开发了WebAPI,我可以在其中传递json,我的类自动填充所有值 但有时,最终用户会传递无效数据或垃圾数据,因此我的对象返回为null 我需要记录每个请求,无论对我的记录有效还是无效 我该怎么做呢?如果您提供一些实现的代码,答案可能会更准确 通常,如果您有一个类要用JSON进行序列化/反序列化,一种方法可能是: public class Response { public bool success { get; set; } public string data {

我用一个类开发了WebAPI,我可以在其中传递json,我的类自动填充所有值

但有时,最终用户会传递无效数据或垃圾数据,因此我的对象返回为null

我需要记录每个请求,无论对我的记录有效还是无效


我该怎么做呢?

如果您提供一些实现的代码,答案可能会更准确

通常,如果您有一个类要用JSON进行序列化/反序列化,一种方法可能是:

public class Response
{
    public bool success { get; set; }
    public string data { get; set; } 
    public string timestamp { get; set; }
    ...
}
使用Newtonsoft JSON序列化程序将JSON字符串反序列化为对应的类对象

try
{
    var jsonInput = "{success:true,data:'hello', timestamp:'123123123'}"; /*Request at you API*/
    Response response = Newtonsoft.Json.JsonConvert.DeserializeObject<Response>(jsonInput);
}
catch(Exception)
{
    // handle here bad request
}

这将导致模型被反序列化两次:一次由模型绑定器反序列化,一次由此代码反序列化。您还必须将此代码复制粘贴到每个操作方法。此外,默认序列化程序不必是JSON序列化程序。此外,您正在忽略可能已在更高级别设置的序列化程序设置。由于此原因,我的对象返回为null。您的意思是在操作中接收到的对象为null吗?是的,对象返回为null。什么是对象返回为null?如果要记录所有请求,请使用自定义DelegatingHandler并全局注册它。