Я пытаюсь сделать вызов WCF, но я продолжаю получать эту ошибку, когда вызов возвращается клиенту. Я попытался установить все десятичные значения не-нулевых значений, как так:NetDispatcherFaultException: ValueType 'System.Decimal' не может быть нулевым
[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' не может быть пустым. на ReadAssetCustomFromXml (XmlReaderDelegator, XmlObjectSerializerReadContext, XmlDictionaryString [], XmlDictionaryString [])
Я не знаю, что вызывает ошибку.
Не могли бы вы показать содержимое внутреннего исключения? И, пожалуйста, опубликуйте определение SaveRecordResult. – khlr
Где я могу найти определение для этого? Я думал, что это всего лишь созданная вещь WCF. –
Правильно, SvcUtil.exe создает для вас классы прокси. Поместите курсор где-нибудь на SaveRecordResult и нажмите F12. Вы контролируете обслуживание? – khlr