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我不知道。我还没有测试我的代码。我只是给出了一个可以完成的方法的提示。非常感谢您纠正我的错误