第一种:无法序列化 DataTable。未设置 DataTable 名称。
第二种:
排除过程如下:
1.用WCF调试状态下的客户端调用ESB的Publish方法调用成功,证明ESB的推送是没有问题的;
2.用WinForm调用部署在IIS上的WCF的测试方法(不包含bus.Publish方法)调用成功,证明WCF服务是没有问题的;
3.用WinForm调用部署在IIS上的WCF的bus.Publish方法调用失败,报上述异常;
4.用WinForm调用WCF调试状态下的bus.Publish方法调用成功。
最终得出结果(度娘说是什么类没有序列化,狠狠的把我坑了):很可能是IIS的原因。
既然WinForm可以调用WCF调试状态下的WSDL地址,为什么不能调用WCF部署在IIS上的WSDL地址?很可能是因为IIS的权限不够,解决方案如下:
IIS管理器-->应用程序池-->选中目标应用池-->高级设置-->进程模型-->标识-->自定义账户-->设置-->输入本机Administrator级别的用户名、密码,配置如下: