Мне дали wsdl, и мне нужно создать веб-сервис, следуя его спецификациям; Я использую Visual Studio 2010. Среди других есть также определение этого сложного типа:Webservice - Как передать информацию о часовом поясе в элементе datetime
<xsd:complexType name="Person">
<xsd:sequence>
<xsd:element name="surname" type="xsd:string"/>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="birthDate" nillable="true" type="xsd:dateTime"/>
</xsd:sequence>
</xsd:complexType>
Использование VS я получил следующий CS (я не помню exaclty, как я сделал, но я следовал инструкциям найдено в Интернете):
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://XXX/Submitter/")]
public partial class Person {
private string surnameField;
private string nameField;
private System.Nullable<System.DateTime> birthDateField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string surname {
get {
return this.surnameField;
}
set {
this.surnameField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string name {
get {
return this.nameField;
}
set {
this.nameField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=true)]
public System.Nullable<System.DateTime> birthDate {
get {
return this.birthDateField;
}
set {
this.birthDateField = value;
}
}
И все правильно: оно компилируется, запускается и дает ожидаемый результат; Единственная проблема заключается в том, что другая сторона, которая дала мне WSDL, при вызове моего веб-сервиса, рассчитывает получить поле РОЖДЕНИЯ, как
2013-02-15T17:28:00+01:00
с информацией о часовом поясе, в то время как результат они получают, как
2015-11-17T18:30:11
без временной зоны.
Моя проблема в том, что у меня есть тип DateTime?
, и это тот, который я передаю моему объекту, созданному из класса; следует ли переопределять сериализацию или есть другое наиболее распространенное решение? Спасибо
DateTime в порядке. Но он не содержит информацию о часовом поясе, поэтому вам придется хранить это отдельно. Возможно, вы захотите проверить объект DateTimeOffset. Вам нужно будет ответить на несколько вопросов для себя, чтобы правильно отправить правильную информацию ... Каков часовой пояс относительно? (т. е. клиент? ваш сервер? какое-то другое место?) И какой часовой пояс для даты, которую вы отправляете (если это не UTC), потому что вам нужно будет конвертировать. – MutantNinjaCodeMonkey
@MutantNinjaCodeMonkey Моя проблема заключается не в том, как получить часовую зону, более того, поскольку это будет специальная интеграция, предназначенная только для одного клиента здесь, в Италии, и часовой пояс будет относиться к клиенту и серверу в том же здании (больничная среда). Моя текущая проблема заключается в том, как передавать эту информацию, когда wsdl говорит, что это должно быть дата и время, тип данных, не содержащий информацию о часовом поясе; Я даже не уверен, что смогу ... – Simone