2011-12-02 57 views
3

我有一个使用可靠会话的WCF服务。在我的测试中,我倾向于打开频道,调用方法然后关闭频道。“会话在消息传输完成前关闭”与WCF可靠会话

我在Close()期间经常会遇到The session was closed before message transfer was complete.异常。

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

如何避免此异常?

+0

你有没有得到这个地方? – PatFromCanada

回答

1

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

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

+0

我引起了'Close()' - 我在测试结束时调用了它。 –

+0

没有在诊断日志中? – Peter

0

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

0

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

确保你有没有改变你的经营合同为你的方法

[OperationContract(IsOneWay=true)]