Asp.net

ASP.NET Web 服務中的可選參數

  • December 13, 2017

我有一個 ASP.NET Web 服務。該網路服務執行良好。但是,WSDL 將一些參數列為可選參數(minoccurs = 0),而將其他參數列為非可選參數。一些可選參數實際上不是可選的,其他標記為非可選的參數實際上是可選的。我想解決這個問題,但我找不到此資訊的來源。

在我看來,所有原始類型(int、boolean 等)都是非可選的,所有其他參數都標記為可選。但是,我找不到可以更改此設置的位置。如果請求中缺少原始值,我想為原始值指定預設值,並指定哪個非原始參數實際上是可選的。我在哪裡做這個?

我假設當您說 ASP.net Web 服務時,您正在創建帶有 ASMX 擴展的 Web 服務。我認為在這種情況下發生的情況是所有可為空的類型都變為可選,而不可為空的類型變為非可選。

您或許可以手動編輯生成的 WSDL 文件。但是,如果重新生成 wsdl,您將不得不重做該工作。

我建議您使用 basicHttpBinding 切換到 WCF(除了您服務的名稱,您的客戶不應該注意到差異)。

使用 WCF,您可以簡單地將數據協定中的參數標記為是否需要:

[DataMember(IsRequired="false")]

引用自:https://stackoverflow.com/questions/995521