反序列化为对象时"xmlns=> 不是预期的"(在某些计算机上)



我正在尝试反序列化XML。我的系统在dev-env中也没有问题。或运行时。我的QA分析师也没有问题。然而,在客户端站点,我们收到以下错误:

XML文档中存在错误。系统InvalidOperationException:不应为。在微软。Xml。序列化。生成的程序集。XmlSerializationReaderCrashEntity。Read74_CrashEntity((在系统中。Xml。序列化。XmlSerializer。反序列化(XmlReader XmlReader、String encodingStyle、XmlDeserializationEvents事件(在公用事业。XML。XMLUtility。反序列化对象(字符串XML,类型ObjectType(位于DirectoryFramework。导入数据((

是什么原因导致客户端站点出现这种情况,而不是在dev/qa环境中?

源XML(小片段(:

<CitationEntity>
<CitationNumber>E00C000006</CitationNumber>
<Agency>123456789</Agency>
<CaseNumber>1234456</CaseNumber>
</CitationEntity>

反序列化方法:

Type entListType = typeof(List<>).MakeGenericType(entType);
object entities = null;
try
{
entities = XMLUtility.DeserializeObject(outputXml, entListType);
}
catch (Exception ex)
{...}

public static Object DeserializeObject(String XML, Type ObjectType)
{
Object retval = null;
XmlSerializer serializer = new XmlSerializer(ObjectType);
XmlDocument doc = new XmlDocument();
doc.LoadXml(XML);
XmlNode node = doc.DocumentElement;
XmlReader readnode = new XmlNodeReader(node);
retval = serializer.Deserialize(readnode);
return retval;
}

目标类片段:

[DataContract, Serializable]
[ModuleCode("TC")]
[InvolvementDate("CitationDate")]
[MFRStatusHistoryModuleCode("TC")]
public partial class CitationEntity : Entities.baseEntity, INameEntity
{
[DataMember]
[DefaultValue("")]
public string Agency
{
get { return _Agency; }
set
{
if (value != _Agency)
{
_Agency = value;
OnPropertyChanged("Agency");
}
}
}
string _Agency;
[DataMember]
[DefaultValue("")]
public string CaseNumber
{
get { return _CaseNumber; }
set
{
if (value != _CaseNumber)
{
_CaseNumber = value;
OnPropertyChanged("CaseNumber");
}
}
}
string _CaseNumber;
[DataMember]
[DefaultValue("")]
public string CitationNumber
{
get { return _CitationNumber; }
set
{
if (value != _CitationNumber)
{
_CitationNumber = value;
OnPropertyChanged("CitationNumber");
}
}
}
string _CitationNumber;
}

我的电脑上安装了.net Framework 4.7,客户端电脑安装了4.0左右。我想这可能是问题所在。我们将客户端计算机更新为4.8,但没有什么不同。我更新到了4.8,它仍然可以正常工作。

很抱歉对此发出错误警报。我注意到,作为产品安装的一部分,目标实体被错误地选择了。在我与安装程序逐行查看安装配置后,我注意到该实体用于Crash,而不是Incident。一旦设置了正确的实体,反序列化就会像符咒一样工作。

经验教训。。。当出现意外错误时,不要认为其他人正确安装了产品。

相关内容

  • 没有找到相关文章

最新更新