以上是调用时的报错信息。调试时,代码逻辑没有问题,可以正常返回结果,但是再下一步就报错,开始一直百思不得其解,明明返回了正确的结果,为什么还是报错,没想到是从是在对结果的序列化处理的过程中,发生错误。
这是在错误处理其中设置断点,发现拦截的错误为:
Enum value '0' is invalid for type 'Entity.Enum.LitSourceType' and cannot be serialized. Ensure that the necessary enum values are present and are marked with EnumMemberAttribute attribute if the type has DataContractAttribute attribute.
枚举值0是不合法的,不能被序列化。再定位该枚举发现这个枚举定义的是从1开始的,而返回的结果中该枚举值的值是0,也就是没有=赋值,使用的默认的返回结果。从而导致在序列化的过程中报错。另外直接看抛出的异常是无法查到根本所在,还是需要对wcf服务做异常的处理
在整个调用过程中忽视了wcf自动为我们处理的部分,从而导致问题查了很久。以后需要多关注原理以及源码的学习。