Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NetDispatcherFaultException:ValueType';十进制';不能为空_C#_Wcf - Fatal编程技术网

C# NetDispatcherFaultException:ValueType';十进制';不能为空

C# NetDispatcherFaultException:ValueType';十进制';不能为空,c#,wcf,C#,Wcf,我正在尝试进行WCF调用,但当调用返回到客户端时,我不断收到此错误。我已尝试将所有十进制值设置为非空值,如下所示: [FaultContract(typeof(AdaptFaultDetail))] [FaultContract(typeof(BLFaultDetail))] public IRecord SaveRecord(IRecord theRecord, string transactionId, bool reloadRecordAfterSave)

我正在尝试进行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;
    }
但我仍然在客户端遇到了这个错误:

格式化程序在尝试反序列化消息时引发异常:尝试反序列化参数时出错。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不匹配。