[英]NetDispatcherFaultException: ValueType 'System.Decimal' Cannot Be Null
我正在嘗試進行WCF調用,但是當調用返回到客戶端時,我一直收到此錯誤。 我已經嘗試將所有十進制值設置為非空值,如下所示:
[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;
}
但我仍然在客戶端遇到此錯誤:
格式化程序在嘗試反序列化消息時拋出異常:嘗試反序列化參數http://tempuri.org/:SaveRecordResult時出錯。 InnerException消息是'ValueType',System.Decimal'不能為null。'。 有關更多詳細信息,請參閱InnerException。
內在例外:
System.Runtime.Serialization.SerializationException:ValueType'System.Decimal'不能為null。 在ReadAssetCustomFromXml(XmlReaderDelegator,XmlObjectSerializerReadContext,XmlDictionaryString [],XmlDictionaryString [])
我不知道是什么導致了這個錯誤。
此異常是由消息的序列化程序與解串器不具有相同的dll引起的。
在這種情況下,該類已過時,因此,發送方(序列化程序)序列化了一個對象,該對象上沒有接收器(解串器)所期望的十進制字段,並拋出異常。
我不確定為什么甚至允許WCF連接發生,但我想這就是WCF的工作原理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.