Web服务字符串中的Null作为字符串接收.empty
本文关键字:字符串 empty Null 服务 Web | 更新日期: 2023-09-27 18:00:38
我有一个web服务,它有一个接收和对象的方法。对象的属性之一是字符串。此属性的默认值为字符串.空。
有时我确实想在那个对象上设置null并发送它。但如果我这样做并在调试模式下检查对象是否收到,我会发现收到了一个空字符串。
我尝试过用两种方法调用Web服务,两种方法都会产生相同的字符串空值;
- 通过从服务引用创建web服务调用对象
- 通过在web服务代理上调用
有什么办法解决这个问题吗?
默认值的意义在于,它将在不提供任何内容的情况下使用。系统无法知道它收到的是null值,因为你明确地为它提供了null值,还是因为你没有提供值,所以如果你告诉它默认为String.empty,那么当它收到null值时,它就会这样做。如果您确实希望能够传递null值并将其接收为null值,那么您将不得不重新考虑默认值的使用。
然而,这里有一个想法:如果您颠倒字符串的用法。空和null,默认行为是转换字符串。空值为null,但有一个数据注释可以防止这种情况:
[DisplayFormat(ConvertEmptyStringToNull = false)]
所以,也许您可以使用null作为默认值,传递它字符串。在您现在将其传递为null的情况下为空,并告诉它通过使用该数据注释来让它们通过?
我相信使用自定义序列化程序可以实现这一点。默认情况下,空字符串作为空字符串通过服务边界iirc传递。
查看ixmlserializable或iserializable
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable(v=vs.110).aspx
如果使用wcf
http://msdn.microsoft.com/en-us/library/ms731073(v=vs.110).aspx