使用WCF可靠会话“会话在消息传输完成之前关闭”

时间:2011-12-02 09:32:40

标签: wcf

我有一个使用可靠会话的WCF服务。在我的测试中,我倾向于打开一个频道,调用一个方法,然后关闭频道。

我经常在The session was closed before message transfer was complete.期间收到Close()例外。

鉴于我的方法是同步的,消息传输应该是完整的。如果它是导致这个问题的可靠会话(因为它仍然在幕后做某事),它肯定是负责阻止我的Close()呼叫,还是放弃而不抛出异常?

如何避免此异常?

3 个答案:

答案 0 :(得分:1)

您应该找到导致连接关闭的原因。使用WCF服务配置编辑器为服务器和客户端配置文件添加诊断信息。

重新发送错误并在查看器中打开日志。您可能会发现该消息在服务器端很大。

答案 1 :(得分:0)

您可能需要考虑的是在调用Close()时指定超时值,以便有更多时间进行正常关闭。这可以免除许多问题。 (虽然我同意找到原因并试图阻止它也很重要。)

答案 2 :(得分:0)

我遇到了同样的问题,解决方案是通过将被调用的方法标记为 IsOneWay = false 这是默认设置来更改我的界面定义中的操作合同。

确保您没有将方法的操作合同更改为

[OperationContract(IsOneWay=true)]