the*_*onk 7 wcf exception-handling protocolexception
我有一个GUI客户端,它运行在服务器盒上作为Windows服务托管的WCF服务上运行.WCF服务在PerCall InstanceContextMode中运行,并且客户端具有服务客户端的单例实例,并且我想避免在每次调用时重新实例化单例,因为它使我的许多异步调用变得困难.
对我来说问题是,在重新启动Windows服务之后,每次客户端进行调用时都会收到如下异常消息:
由于服务器启动的关闭,输出会话自动关闭,因此该通道不能再用于发送消息.通过将DispatchRuntime.AutomaticInputSessionShutdown设置为false来禁用自动关闭,或者考虑使用远程服务器修改关闭协议.
什么是最好的解决方法?我可以将try-catch子句放在对服务客户端的所有调用周围,并在通信异常上重新实例化单例实例,但这将涉及大量的样板代码.
最好的方法是尽量避免服务器上的异常.如果WCF服务器遇到未被捕获和处理的异常,它将"错误"通道,使其无效.
在服务器端,您可以实现IErrorHandler接口并捕获.NET异常,将它们转换为SOAP错误,这些错误将更优雅地传回客户端,而不会导致通道错误.
这样,您可以捕获服务器上的所有.NET异常,并将它们转换为可互操作的SOAP错误,这些错误不会导致这些问题.
有关更多信息,请参阅:
| 归档时间: |
|
| 查看次数: |
10928 次 |
| 最近记录: |