簡體   English   中英

Webservice字符串中的Null作為string.empty接收

[英]Null in strings of webservice gets received as string.empty

我有一個帶有接收和對象方法的Web服務。 對象的屬性之一是字符串。 此屬性的默認值為string.empty。

有時我確實想在該對象上設置null並將其發送。 但是,如果我這樣做並檢查在調試模式下接收到該對象,則會看到已接收到空字符串。

我試圖以兩種方式調用Web服務,兩者都導致相同的string.empty值;

  • 通過從服務引用創建Web服務調用對象
  • 通過調用Web服務代理

任何想法如何解決這個問題?

默認值的要點是將在不提供任何內容的情況下使用它。 系統無法知道是否收到了空值,因為您顯式提供了一個空值或因為沒有提供值,所以如果您將其默認設置為String.empty,則它將在以下情況下這樣做:它得到一個空值。 如果您確實希望能夠將默認值傳遞給null值並以此方式接收它們,那么您將不得不重新考慮使用默認值。

但是,這是一個想法:如果您反轉string.Empty和null的用法,則默認行為是將string.Empty值轉換為null,但是有一個數據注釋可以防止這種情況:

[DisplayFormat(ConvertEmptyStringToNull = false)]

因此,也許您可​​以使用null作為默認值,將其傳遞給string.Empty,如果您現在要傳遞null,並通過使用該數據注釋告訴它讓那些遍歷通過?

我相信使用自定義序列化程序將實現此目的。 默認情況下,空字符串在服務邊界iirc上作為空傳遞。

查看ixmlserialisable或iserializable

http://msdn.microsoft.com/zh-cn/library/system.runtime.serialization.iserializable(v=vs.110).aspx

如果使用wcf

http://msdn.microsoft.com/zh-CN/library/ms731073(v=vs.110).aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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