gpt4 book ai didi

c# - WCF 服务中未定义的枚举值

转载 作者:太空狗 更新时间:2023-10-30 00:36:49 26 4
gpt4 key购买 nike

我们有一个公开“客户”类型的 WCF 服务,即:

[DataContract(Name = "CustomerData", Namespace = "http://www.testing.com")]public partial class Customer{       [DataMember]    public CustomerLevel Level    {        get;        set;    }   }

可以看到上面的类型有一个属性是枚举类型。这个枚举的定义是:

[IgnoreCoverage][DataContract(Namespace = "http://www.testing.com"")]public enum CustomerLevel : int{    [EnumMember(Value = "Platinum")]    Platinum = 1,    [EnumMember(Value = "Gold")]    Gold = 2,    [EnumMember(Value = "Silver")]    Silver = 3,    [EnumMember(Value = "Bronze")]    Bronze = 4,}

只要服务器为它返回的每个客户发送有效的枚举,该服务就可以正常工作。但是,如果服务返回未在枚举中定义的 CustomerLevel,则服务调用超时。

错误的 CustomerLevel 值示例可能是:

customer.Level = (CustomerLevel)0;

如果客户端尝试发送未定义的值,服务也会超时。

有什么方法可以让未定义的值同时流向客户端和服务器,并让它们各自处理错误的值?

最佳答案

我不认为你会让伪造的枚举起作用。他们会反序列化成什么?如果您的意思是客户端发送整数,则将类型更改为 int,并自行将其转换为枚举(使用您自己的错误处理)。

关于客户端是否应该超时,请告诉我们您使用的是哪种客户端。此外,我建议您查看网络流量并查看服务如何响应(如果有的话)。还要查看 Windows 事件日志以查看该服务是否有任何投诉。最后,您可能想要打开 WCF 跟踪以查看服务对此有何 react 。

关于c# - WCF 服务中未定义的枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/735078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com