【问题标题】:Formatter error: There was an error while trying to deserialize parameter after Windows updates格式化程序错误:Windows 更新后尝试反序列化参数时出错
【发布时间】:2021-01-08 12:57:40
【问题描述】:

我有一个 WCF 请求,在某些 Windows 更新之前工作正常。之后我收到此错误,我无法找到解决方法。

错误是:尝试反序列化参数http://tempuri.org/:CommandRequestResult时出错。有关详细信息,请参阅 InnerException。

InnerException:此处不允许输入“NEntities.IPAElement, NEntities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”。请参阅https://go.microsoft.com/fwlink/?linkid=2132227 了解更多信息。

这是我的 IPAElement 类和其中包含的枚举。即使我用字符串更改枚举,我仍然会遇到同样的错误,所以这应该不是问题

[Serializable()]

[DataContract(IsReference = true)]

public class IPAElement//:ISerializable

{

    public IPAElement(List<string> bodyElNames, List<ElementType> bodyElTypes)

    {

        BodyElement = bodyElNames;

        BodyRowElementType = bodyElTypes;

    }



    public IPAElement()

    { }



    [DataMember]

    public List<string> HeaderElement;



    [DataMember]

    public List<string> BodyElement;



    [DataMember]

    public List<string> FooterElement;



    [DataMember]

    public List<ElementType> HeaderRowElementType;



    [DataMember]

    public List<ElementType> BodyRowElementType;

   

    [DataMember]

    public List<ElementType> FooterRowElementType;

}

[可序列化]

公共枚举元素类型

{

    [XmlEnum("1")]

    ElementName = 1,

    [XmlEnum("2")]

    Material = 2,

    [XmlEnum("3")]

    MaterialColor = 3,

    [XmlEnum("4")]

    Notes_1 = 4,

    [XmlEnum("5")]

    Notes_2 = 5,

    [XmlEnum("6")]

    Notes_3 = 6,

};

关于如何解决它的任何想法? 谢谢 安德烈亚

【问题讨论】:

  • App.config 可用于扩展允许的类型列表。我认为您可以尝试将 NEntities.IPAElement 添加到允许的类型列表中。

标签: c# wcf serialization


【解决方案1】:

这是由 Windows 更新 KB4565633 中的安全修复程序引起的。

在检查您的用例未受安全漏洞影响后,您可能会需要它:

AppDomain.CurrentDomain.SetData("System.Data.DataSetDefaultAllowedTypes", typeof(IPAElement));

从表面上看,您的IPAElement 似乎不会导致在反序列化时执行任意代码,无论中间的邪恶人(或邪恶来源)在序列化内容中包含什么,所以这种修复在您的特定用例中应该足够安全。 (如果您没有提供ElementType 供审核,我将无法说这么多;我仍然只是猜测DataMemberAttribute 是正常的。)

但是,在您决定解锁 Microsoft 选择锁定的门之前,您不应该相信我的话,如果您的应用应该关心安全性,您应该阅读漏洞并得出自己的结论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多