我有一个带输入参数的网络服务。 WSDL中的相关XSD位于
之下当我在Visual Studio中将此WSDL添加为服务引用时,它生成了一个类,其对应的字段为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
中看到请求中缺少所有日期参数。
我尝试在SoapUI中测试。看起来服务期望日期格式为yyyy-MM-dd
,尽管类型是日期。仅当我以yyyy-MM-dd
格式提供日期时,Web服务才会返回数据。
我不确定它是否与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.
现在,我怀疑Web服务需要Date但.Net正在尝试发送可能延长其长度的DateTime
答案 0 :(得分:3)
看起来我的上一个代码工作但错误是由于另一个字段。
myobject.input.endDate = Convert.ToDateTime(endDate).Date;
myobject.input.endDateSpecified = true;