C# 更改wsdl以设置时间模式
我在c#中创建了一个asmx web服务,它在一个方法中返回日期时间值。在WSDL中,该值被分配给时间类型。 客户端是在SAP系统上创建的,客户端无法解析此时间信息,出现以下错误: cx\u系统\u转换\u否\u日期\u时间xslt 在这种情况下可以做些什么?我第一次想到的是更改wsdl,以便所有时间值都以SAP客户端可以解析的方式序列化 非常感谢。您有两个选择:C# 更改wsdl以设置时间模式,c#,.net,web-services,wsdl,sap,C#,.net,Web Services,Wsdl,Sap,我在c#中创建了一个asmx web服务,它在一个方法中返回日期时间值。在WSDL中,该值被分配给时间类型。 客户端是在SAP系统上创建的,客户端无法解析此时间信息,出现以下错误: cx\u系统\u转换\u否\u日期\u时间xslt 在这种情况下可以做些什么?我第一次想到的是更改wsdl,以便所有时间值都以SAP客户端可以解析的方式序列化 非常感谢。您有两个选择: 更改客户端(SAP):可能它允许一些配置 更改服务器(.NET):以适当的格式发送值,以便SAP能够理解它们 您可以像这样扩展实体:
[DataContract]
public class Entity
{
private const string YourOwnFormat = "dd.MM.yyyy";
public DateTime DateTime
{
get;
set;
}
[DataMember(Name = "DateTime")]
private string DateTimeString
{
get
{
return DateTime.ToString(YourOwnFormat, CultureInfo.InvariantCulture);
}
set
{
DateTime =
DateTime.ParseExact(value, YourOwnFormat, CultureInfo.InvariantCulture);
}
}
}
关于选项2,如何更改服务器以使DateTime对象可以以不同的模式序列化?@artsince,我认为,您可以使用DateTime属性DateTimeString添加实体。在获取访问器中返回格式化的日期时间。在集合中:从字符串指定日期时间。不要向DateTime属性添加
DataMember
。@art因为我知道,您不能更改DateTime的序列化格式。它将是ISO8601,这很有趣。非常感谢。我尝试了你的建议,但我得到一个错误,说字符串不能转换为时间类型(从System.Serialization.XmlTextAttribute(DataType=time)属性),所以我必须去掉时间属性,这不是很理想。感谢更新。注意,我使用asmx。使用数据成员和数据契约属性,您的答案似乎针对wcf。