Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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# 如何在WCF数据服务中修改请求正文_C#_Wcf Data Services - Fatal编程技术网

C# 如何在WCF数据服务中修改请求正文

C# 如何在WCF数据服务中修改请求正文,c#,wcf-data-services,C#,Wcf Data Services,我有一个WCF数据服务,当客户端发送一个新对象进行保存时,我会收到一个反序列化错误,因为主体包含无效数据: 我可以在服务器端修改请求正文以避免此错误吗?从内部异常中,我看到输入字符串的格式不正确,无法将原语值转换为预期的类型“Edm.Int32”。调试以查看那里有什么而不是int。@AmitKumarGhosh那里有一个字符串值。我应该在那里用int替换字符串,这就是我必须修改请求正文的原因。如果您可以实现自定义参数检查器,这将很容易。我猜,WCF参数检查器仅适用于WCF,而不适用于WCF数据服

我有一个WCF数据服务,当客户端发送一个新对象进行保存时,我会收到一个反序列化错误,因为主体包含无效数据:


我可以在服务器端修改请求正文以避免此错误吗?

从内部异常中,我看到输入字符串的格式不正确,无法将原语值转换为预期的类型“Edm.Int32”。调试以查看那里有什么而不是int。@AmitKumarGhosh那里有一个字符串值。我应该在那里用int替换字符串,这就是我必须修改请求正文的原因。如果您可以实现自定义参数检查器,这将很容易。我猜,WCF参数检查器仅适用于WCF,而不适用于WCF数据服务,如下所示:
An error occurred while processing this request.
   at: System.Data.Services.Serializers.ODataMessageReaderDeserializer.Deserialize(SegmentInfo segmentInfo)
   at: System.Data.Services.Serializers.Deserializer.ReadEntity(ResourceType& entityTypeInPayload)
   at: System.Data.Services.Serializers.Deserializer.HandlePostRequest(ResourceType& targetResourceType)
   at: System.Data.Services.DataService`1.HandlePostOperation(RequestDescription description, IDataService dataService)
   at: System.Data.Services.DataService`1.ProcessIncomingRequest(RequestDescription description, IDataService dataService)
   at: System.Data.Services.DataService`1.HandleNonBatchRequest(RequestDescription description)
   at: System.Data.Services.DataService`1.HandleRequest()

Inner Exception: Cannot convert a primitive value to the expected type 'Edm.Int32'. See the inner exception for more details.
   at: Microsoft.Data.OData.AtomValueUtils.ConvertStringToPrimitive(String text, IEdmPrimitiveTypeReference targetTypeReference)
   at: Microsoft.Data.OData.AtomValueUtils.ReadPrimitiveValue(XmlReader reader, IEdmPrimitiveTypeReference primitiveTypeReference)
   at: Microsoft.Data.OData.Atom.ODataAtomPropertyAndValueDeserializer.ReadNonEntityValueImplementation(IEdmTypeReference expectedTypeReference, DuplicatePropertyNamesChecker duplicatePropertyNamesChecker, CollectionWithoutExpectedTypeValidator collectionValidator, Boolean validateNullValue, Boolean epmPresent, String propertyName)
   at: Microsoft.Data.OData.Atom.ODataAtomPropertyAndValueDeserializer.ReadProperty(String expectedPropertyName, IEdmTypeReference expectedPropertyTypeReference, ODataNullValueBehaviorKind nullValueReadBehaviorKind, Boolean epmPresent)
   at: Microsoft.Data.OData.Atom.ODataAtomPropertyAndValueDeserializer.ReadPropertiesImplementation(IEdmStructuredType structuredType, ReadOnlyEnumerable`1 properties, DuplicatePropertyNamesChecker duplicatePropertyNamesChecker, Boolean epmPresent)
   at: Microsoft.Data.OData.Atom.ODataAtomEntryAndFeedDeserializer.ReadAtomContentElement(IODataAtomReaderEntryState entryState)
   at: Microsoft.Data.OData.Atom.ODataAtomEntryAndFeedDeserializer.ReadAtomElementInEntry(IODataAtomReaderEntryState entryState)
   at: Microsoft.Data.OData.Atom.ODataAtomEntryAndFeedDeserializer.ReadEntryContent(IODataAtomReaderEntryState entryState)
   at: Microsoft.Data.OData.Atom.ODataAtomReader.ReadAtEntryStartImplementation()
   at: Microsoft.Data.OData.ODataReaderCore.ReadImplementation()
   at: Microsoft.Data.OData.ODataReaderCore.ReadSynchronously()
   at: Microsoft.Data.OData.ODataReaderCore.InterceptException[T](Func`1 action)
   at: Microsoft.Data.OData.ODataReaderCore.Read()
   at: System.Data.Services.Serializers.EntityDeserializer.ReadEntry(ODataReader odataReader, SegmentInfo topLevelSegmentInfo)
   at: System.Data.Services.Serializers.EntityDeserializer.Read(SegmentInfo segmentInfo)
   at: System.Data.Services.Serializers.ODataMessageReaderDeserializer.Deserialize(SegmentInfo segmentInfo)

Inner Exception: Input string had an incorrect format.
   at: System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
   at: System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
   at: Microsoft.Data.OData.AtomValueUtils.ConvertStringToPrimitive(String text, IEdmPrimitiveTypeReference targetTypeReference)

   at: System.Data.Services.Serializers.ODataMessageReaderDeserializer.Deserialize(SegmentInfo segmentInfo)
   at: System.Data.Services.Serializers.Deserializer.ReadEntity(ResourceType& entityTypeInPayload)
   at: System.Data.Services.Serializers.Deserializer.HandlePostRequest(ResourceType& targetResourceType)
   at: System.Data.Services.DataService`1.HandlePostOperation(RequestDescription description, IDataService dataService)
   at: System.Data.Services.DataService`1.ProcessIncomingRequest(RequestDescription description, IDataService dataService)
   at: System.Data.Services.DataService`1.HandleNonBatchRequest(RequestDescription description)
   at: System.Data.Services.DataService`1.HandleRequest()