【问题标题】:How to specify 'date' DataType for autogenerated WSDL?如何为自动生成的 WSDL 指定“日期”数据类型?
【发布时间】:2012-09-10 17:28:16
【问题描述】:

我需要将日期(不是日期时间)传递给 Web 服务,

我试过这样:

[WebMethod]
public void myMethod([XmlElementAttribute(DataType = "date")] DateTime someDate)
{
  // ...
}

但它仍然会产生:

<tns:myMethod xsi:type="tns:myMethod">
    <someDate xsi:type="xsd:dateTime">dateTime</someDate>
</tns:myMethod>

有什么想法吗?

【问题讨论】:

    标签: c# asp.net web-services soap


    【解决方案1】:

    在 .NET 中,即使 System.DateTime.Date 也是 DateTime 数据类型 (documentaiton)。 .NET 中没有时间,就没有“日期”数据类型这样的东西。

    DateTime 的日期部分将计算为该日期的午夜 d

    DateTime DateOnly = DateTime.Now.Date;
    Console.Out.WriteLine(DateOnly.ToString("yyyy-MM-dd hh:mm:ss");
    

    会写出来

    2012-09-10 00:00:00

    在您的代码中,您可以使用上面的代码仅访问日期,但无论如何,它将是一个 DateTime 值。

    当然,SOAP 编码确实有一个 Date 数据类型,但是 .NET 除了 DateTime 数据类型之外,没有任何东西可以与之匹配。

    除非您编写自己的数据类型,否则可能会浪费大量时间。

    【讨论】:

    • 我不是在寻找 Date .Net 类,我只需要我的 Web 服务的客户知道他们应该提供日期 (yyy-MM-dd) 而不是 dateTime (yyyy-MM- dd hh:mm:ss)。
    • 我明白这一点。我要告诉你的是只要你使用自动生成的wsdl,你就做不到。运行时会将其转换为日期时间。
    猜你喜欢
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多