C# NetDispatcherFaultException:ValueType';十进制';不能为空
我正在尝试进行WCF调用,但当调用返回到客户端时,我不断收到此错误。我已尝试将所有十进制值设置为非空值,如下所示:C# NetDispatcherFaultException:ValueType';十进制';不能为空,c#,wcf,C#,Wcf,我正在尝试进行WCF调用,但当调用返回到客户端时,我不断收到此错误。我已尝试将所有十进制值设置为非空值,如下所示: [FaultContract(typeof(AdaptFaultDetail))] [FaultContract(typeof(BLFaultDetail))] public IRecord SaveRecord(IRecord theRecord, string transactionId, bool reloadRecordAfterSave)
[FaultContract(typeof(AdaptFaultDetail))]
[FaultContract(typeof(BLFaultDetail))]
public IRecord SaveRecord(IRecord theRecord, string transactionId, bool reloadRecordAfterSave)
{
var retVal = GeneralServiceCalls.SaveRecord(theRecord, transactionId, reloadRecordAfterSave);
foreach (var property in retVal.GetType().GetProperties())
{
if (property.PropertyType == typeof(decimal) && property.GetValue(retVal) == null)
{
property.SetValue(retVal, 0);
}
}
return retVal;
}
但我仍然在客户端遇到了这个错误:
格式化程序在尝试反序列化消息时引发异常:尝试反序列化参数时出错。InnerException消息是“ValueType”System。Decimal“不能为null”。有关更多详细信息,请参阅InnerException
内部异常:
System.Runtime.Serialization.SerializationException:ValueType“System.Decimal”不能为null。
在ReadAssetCustomFromXml(XmlReaderDelegator、XmlObjectSerializerReadContext、XmlDictionaryString[],XmlDictionaryString[])上
我不知道是什么导致了错误。此异常是由消息的序列化程序与反序列化程序没有相同的dll引起的 在本例中,该类已过时,因此,发送方(序列化程序)序列化了一个对象,该对象上没有接收方(反序列化程序)期望的十进制字段,并引发了异常
我不确定为什么WCF连接被允许出现,但我想这就是WCF的工作原理。此异常是由于消息的序列化程序与反序列化程序没有相同的dll造成的 在本例中,该类已过时,因此,发送方(序列化程序)序列化了一个对象,该对象上没有接收方(反序列化程序)期望的十进制字段,并引发了异常
我不确定为什么WCF连接被允许出现,但我想这就是WCF的工作原理。您能显示内部异常的内容吗?请发布SaveRecordResult的定义。我在哪里可以找到它的定义?我以为这只是一个生成的WCF东西。对,SvcUtil.exe为您生成代理类。将光标放在SaveRecordResult上的某个位置,然后点击F12。您是否控制该服务?您是否仍遇到此错误?@khlr发现这只是dll不匹配。请显示内部异常的内容好吗?请发布SaveRecordResult的定义。我在哪里可以找到它的定义?我以为这只是一个生成的WCF东西。对,SvcUtil.exe为您生成代理类。将光标放在SaveRecordResult上的某个位置,然后点击F12。您是否控制该服务?是否仍遇到此错误?@khlr发现这只是dll不匹配。