【发布时间】:2016-03-29 12:29:03
【问题描述】:
我知道将整数转换为无效的枚举值不会导致 C# 中由于标志的异常。在这里,我在 DB 表中指定一个表并使用 EntityFramework 获取其值1-3。在我的服务器端,我将值转换为枚举XyzType,范围从0-2,这显然会生成无效值(XyzType)3。现在我把这个值放在XyzDTO 中并将它发送到 WCF 客户端。反序列化失败并带有这个非常模糊的描述:
现在我已经阅读了其他一些讨论反序列化无效 XML 引起的异常的帖子,这一切都说得通。
我的问题是,为什么我没有得到任何有用的信息来说明原因是什么?我花了最后 1.5 个小时处理这个错误,直到我弄清楚枚举和 DB 值之间的差异。未提供有用信息是否被视为 WCF 错误处理中的缺陷?如果是这样,是否应该通知 MS?您有什么好的做法可以避免将来出现这种情况吗?
编辑:请注意我没有 web.config。我的服务器端是 Windows 服务中的 WCF 服务,即。我有 app.config。
EDIT2:在我看来,关于这个问题以及我尝试过的方法存在一些误解。在调试器中检查 CommunicationException 的 InnerExceptions 根本没有提供任何有用的信息。我也已经在服务器端有“includeExceptionDetailsInFaults”= true,但是服务器端没有抛出异常!它是在客户端反序列化期间引起的。
EDIT3:一些答案建议在客户端激活跟踪。我现在已经尝试过了,但显然对于这个问题,它也没有提供任何有用的信息。 Here 是指向输出的链接。
【问题讨论】:
-
你能另外显示你的
XyzType-Enum吗? -
我排除了它,因为它只是值 x,y,z (0,1,2)。
-
我问过,因为如果您将枚举从
x = 1, y = 2, z = 3更改为x = 0, y = 1, z = 2(与您的数据库匹配),这可能是(尚未更新)客户端的原因抛出异常。
标签: c# wcf enums xml-deserialization