Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net WebService-xsd:Date字段_Asp.net_Web Services_Soap_Xsd - Fatal编程技术网

Asp.net WebService-xsd:Date字段

Asp.net WebService-xsd:Date字段,asp.net,web-services,soap,xsd,Asp.net,Web Services,Soap,Xsd,我正在ASP.NETV3.5中为客户创建Web服务。 目前,我们有一个类似于以下内容的对象,该对象由一个webservice方法返回: public class blah { public DateTime datetime; public int someData; } 现在,客户向我发送了以下请求: 在模式中,xsd:dateTime只有一个条目。你能 将其拆分为两个字段,一个用于日期,另一个用于时间。这个 使用xsd:date和xsd:time应该可以作为对象类型 显然,我可以如下更

我正在ASP.NETV3.5中为客户创建Web服务。 目前,我们有一个类似于以下内容的对象,该对象由一个webservice方法返回:

public class blah
{
 public DateTime datetime;
 public int someData;
}
现在,客户向我发送了以下请求:

在模式中,xsd:dateTime只有一个条目。你能 将其拆分为两个字段,一个用于日期,另一个用于时间。这个 使用xsd:date和xsd:time应该可以作为对象类型

显然,我可以如下更改该类:

public class blah
{
 public DateTime date;
 public DateTime time;
 public int someData;
}
但我假设这将实际生成两个“xsd:DateTime”字段,而不是他请求的每个字段


请告诉我如何实现客户期望的结果?

在.NET中没有
时间
对象,这是
日期时间
对象的一部分

我会继续使用两个
字符串
对象

public class blah
{
    public string date;
    public string time;
    public int someData;
}
然后把它们解析成一个DateTime对象

DateTime dateOut;
if(DateTime.TryParseExact(
          string.Format("{0} {1}", date, time), 
          "yyyy-MM-dd HH:mm", 
          null, 
          System.Globalization.DateTimeStyles.None, 
          out dateOut)) 
{
   // date is valid
}
else
{
    // send error back saying that DATE or/and Time needs to follow a pattern
}

要使属性采用您可以装饰的特定类型,请执行以下操作:

public class blah
{
    [XmlElement(DataType = "Date")]
    public string date;
    [XmlElement(DataType = "Time")]
    public string time;
    public int someData;
}
但是有一些论坛.NET在这方面有一些问题。。。尝试一下,自己测试一下,比如使用Fiddler模拟对您的服务的调用

public class Blah
{
 [System.Xml.Serialization.XmlElement(Namespace="http://www.w3.org/2001/XMLSchema", DataType="time")]
 public DateTime time;

 [System.Xml.Serialization.XmlElement(Namespace="http://www.w3.org/2001/XMLSchema", DataType="time")]
 public DateTime date;

 public int someData
}

这似乎正是我要找的

但是如何在客户端所需的WDSL/SOAP中提供“xsd:Date”和“xsd:Time”对象类型?NET不输出此类类型。PHP或Java都可以。即使你超控,你也会有麻烦。我知道.Net没有“时间”类型,但必须有一种方法告诉客户端您期望的是“XSD:Time”类型?显然,在内部我们可以把它作为一个字符串。。。