C# JsonConvert序列化对象忽略文件/stream/System.Web.HttpPostedFileWrapper
我在自定义C# JsonConvert序列化对象忽略文件/stream/System.Web.HttpPostedFileWrapper,c#,asp.net-mvc,serialization,json.net,C#,Asp.net Mvc,Serialization,Json.net,我在自定义ActionFilterAttribute中使用JsonConvert.Serialized对象 在OnActionExecuting中,我正在序列化filterContext.ActionParameters以用于日志记录。 问题是,一些操作通过带有enctype=“multipart/form data”的接收文件(System.Web.HttpPostedFileWrapper),因此我得到了错误信息 此流不支持超时 我想做的是忽略这些类型的对象,它们无法序列化,并且可能会出错。
ActionFilterAttribute
中使用JsonConvert.Serialized对象
在OnActionExecuting
中,我正在序列化filterContext.ActionParameters
以用于日志记录。
问题是,一些操作通过带有enctype=“multipart/form data”
的
接收文件(System.Web.HttpPostedFileWrapper
),因此我得到了错误信息
此流不支持超时
我想做的是忽略这些类型的对象,它们无法序列化,并且可能会出错。
我发现我可以用[JsonIgnore]
或[ScriptIgnore]
属性忽略类
属性
,但我正在寻找一个更通用的解决方案,因为我不想把这些属性放得到处都是。
我还试图研究JsonSerializerSettings
对象,但没有找到与我的案例相关的内容。您可以简单地筛选这些参数。有些人认为:
var ToBeSerialized = filterContext.ActionParameters.Where(a=>a.Value.GetType()!=typeof(TheTypeYouWantToAvoid));
string result = JsonConvert.SerializeObject(ToBeSerialized);
您可以简单地过滤这些参数。有些人认为:
var ToBeSerialized = filterContext.ActionParameters.Where(a=>a.Value.GetType()!=typeof(TheTypeYouWantToAvoid));
string result = JsonConvert.SerializeObject(ToBeSerialized);
好的,很好的方法,你需要修正你的答案:.Where(a=>a.Value.GetType()!=typeof…
,因为我们需要检查动作的每个参数的值(在这种情况下a
始终是字典的
成员)@Sag1v我不知道。我还没有测试我的代码。我只是给出了一个方法的提示。非常感谢你纠正了我的错误。好的,很好的方法,你需要修正你的答案:。其中(a=>a.Value.GetType()!=typeof…
,因为我们需要检查动作的每个参数的值。(本例中的a
始终是词典的
成员)@Sag1v我不知道。我还没有测试我的代码。我只是给出了一个可以完成的方法的提示。非常感谢您纠正我的错误