我已經通過從XML模式生成WSDL和類來編寫Java中的JAX-WS webservice。.NET web服務引用生成的類不能使用dateTime類型
我在Visual Studio中將該服務添加爲Web引用,以便與C#.NET客戶端應用程序一起使用。
原始XML模式使用了一些日期/時間類型:xs:date和xs:dateTime用於某些元素。
我的問題是,我的'dateTime'類型無法正常工作。它在生成的類(由Visual Studio 2010中的XMLSerializer生成)中轉換爲.NET DateTime對象(正確),然後我可以創建自己的DateTime對象並在這些類之一上設置DateTime。但是,當將請求發送回服務器時,客戶端應用程序發送的是空值而不是我設置的DateTime對象。所以我猜這是不正確的序列化。
我沒有與'日期'類型相同的問題,序列化/反序列化罰款。
我注意到一些東西,可能是問題,但不知道:
在生成的類DateTime對象看起來是這樣的: [System.Xml.Serialization.XmlElementAttribute(訂單= 10)] 公共系統.DateTime MyDateTime {...}
而在生成的類的時間對象看起來像這樣: [System.Xml.Serialization.XmlElementAttribute(數據類型= 「日期」,訂單= 12)] 公共的System.DateTime MyDate {...}
因此,date對象中有一些額外的信息--DataType =「date」,但dateTime對象沒有DateType。這可能是問題嗎?如果是這樣,爲什麼它不能正確生成類?
感謝您的幫助
注意:dateTime問題只是單向的。當客戶端(.NET)應用程序向服務器發送帶有dateTime元素的請求對象並且服務器接收到空值時,會發生此問題。另一種方式似乎沒有問題(如果服務器發送帶有dateTime元素的響應對象,則客戶端收到具有正確日期/時間信息的DateTime對象的響應) – Josh
請絕對100%確定您確實設置了一個將有效的DateTime VALUE添加到請求中。接下來,請通過在您的客戶端系統上運行Fiddler並檢查請求,驗證您的傳出請求到服務器。請回來你的調查結果。 – kroonwijk
我有類似的問題。在我的案例中,dateTime成員在發送到服務器的xml中被跳過。它與wsdl包含minOccurs =「0」的事實有關。因此,Visual的生成的客戶端包含此字段爲「指定」的標誌。我必須添加:fieldNameSpedified = true;爲每個這樣的領域。這可能也是你的情況。 – bart