0
我有一個輸入參數的Web服務。在WSDL中的相關XSD低於Web服務的日期格式問題
當我加入此WSDL作爲在Visual Studio服務引用,它產生了一類具有作爲System.DateTime
相應的字段。下面是增加了對WSDL參考類領域
private System.Nullable<System.DateTime> startDateField;
我結合服務,創建客戶端CustomBinding下面
protected CustomBinding GetCustomBinding()
{
var customBinding = new CustomBinding() { Name = "CustomBinding" };
customBinding.Elements.Add(new TextMessageEncodingBindingElement() { MessageVersion = MessageVersion.Soap11 });
var securityBindingElement = SecurityBindingElement.CreateUserNameOverTransportBindingElement();
securityBindingElement.AllowInsecureTransport = true;
securityBindingElement.EnableUnsecuredResponse = true;
securityBindingElement.IncludeTimestamp = false;
customBinding.Elements.Add(securityBindingElement);
customBinding.Elements.Add(new HttpTransportBindingElement());
return customBinding;
}
我的C#代碼分配輸入
myobject.input.endDate = Convert.ToDateTime(endDate);
的一個例子
在分配輸入值後,我調用web方法在Fiddler
中查看Request中缺少所有日期參數。
我試着在SoapUI中測試。它看起來像服務期望的格式yyyy-MM-dd
日期,雖然類型是日期。只有當我提供格式爲yyyy-MM-dd
的日期時,webservice纔會返回數據。
我不確定這是否與Web服務預期的日期格式有關。顯然,我不能以格式yyyy-MM-dd發送.Net生成的參考類具有DateTime
而不是string
數據類型。
我試圖強行將Specified
爲true
myobject.input.endDate = Convert.ToDateTime(endDate).Date;
myobject.input.endDateSpecified = true;
我得到了下面的錯誤:
A value was being set that exceeded the maximum allowable field length.
現在,我懷疑是網絡服務預計日期,但.NET是試圖發送日期時間這可能會延長其長度
如果您使用的是WSDL,那麼您可能具有帶DateTime屬性的對象?只需設置屬性,它應該沒問題。如果您忽略了WSDL並編寫自己的序列化程序,那麼您可以使用自定義格式化程序「ToString」日期。考慮到這一切,不清楚你的問題是什麼 – PaulG
@PaulG - 我使用Add Service Reference選項將WSDL添加到我的項目中; .Net生成一個與WSDL匹配的類來與Web服務交互;當我指定日期並調用方法時,我沒有看到Request中的日期參數轉到Web服務;我相信這顯然是與日期格式有關的。但不知道該怎麼做 – techspider
調試你的代碼以確保myobject.input.endDate的賦值實際上被執行,並且myobject.input.endDate之後有一些有效的內容。 – NineBerry