Web服务的日期格式问题

时间:2016-04-21 21:13:44

标签: c# web-services date

我有一个带输入参数的网络服务。 WSDL中的相关XSD位于

之下

enter image description here

当我在Visual Studio中将此WSDL添加为服务引用时,它生成了一个类,其对应的字段为System.DateTime。下面是为WSDL

添加的Reference类中的字段示例
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

1 个答案:

答案 0 :(得分:3)

看起来我的上一个代码工作但错误是由于另一个字段。

myobject.input.endDate = Convert.ToDateTime(endDate).Date;
myobject.input.endDateSpecified = true;