簡體   English   中英

NetDispatcherFaultException:ValueType'System.Decimal'不能為空

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM