我有一个使用可靠会话的WCF服务。在我的测试中,我倾向于打开一个通道,调用一个方法,然后关闭通道。
我经常在Close()期间得到一个The session was closed before message transfer was complete.异常。
鉴于我的方法是同步的,消息传输应该已经完成。如果是可靠的会话导致了这个问题(因为它仍然在幕后做着一些事情),那么它肯定要负责阻塞我的Close()调用,或者放弃而不抛出异常?
如何避免此异常?
发布于 2011-12-02 17:51:01
您应该找到导致连接关闭的原因。使用WCF服务配置编辑器将诊断信息添加到服务器和客户端配置文件中。
重现错误并在查看器中打开日志。您可能会发现消息在服务器端太大了。
发布于 2012-01-01 08:31:41
我也有同样的问题,解决方案是在我的接口定义中更改操作契约,将调用的方法标记为IsOneWay=false,这是默认设置。
确保您没有将方法的操作合同更改为
[OperationContract(IsOneWay=true)]发布于 2011-12-02 20:17:25
您可能需要考虑的是,在调用Close()时指定一个超时值,以便有更多的时间正常关闭。这可以让你省去很多问题。(尽管我同意找到原因并试图阻止它也很重要)。
https://stackoverflow.com/questions/8354279
复制相似问题