Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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
C# 更改wsdl以设置时间模式_C#_.net_Web Services_Wsdl_Sap - Fatal编程技术网

C# 更改wsdl以设置时间模式

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能够理解它们 您可以像这样扩展实体:

我在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。