WCF客户端CloseAsync与Abort()

时间:2013-01-30 21:09:42

标签: wcf

我正在使用可移植类库来构建服务类,我们所有的UI技术都用于与我们的服务进行通信。

这些库将支持Silverlight,Asp.Net和任何其他.Net UI技术。

由于支持Silverlight,所有调用必须是异步的。

使用Silverlight,我可以在client.Method()调用服务后立即调用CloseAsync()。

但是,我发现这与Asp.Net客户端不兼容。

我不想在已完成的代码中使用CloseAync(),因为如果正在进行多次异步调用,则可能会遇到计时问题。

我宁愿不必提出很多逻辑,例如在每个异步方法中放置一个while循环,以确保没有调用并完成CloseAsync()。

现在我正在测试只在已完成的部分中使用Abort,一切似乎都正常。

只是好奇是否有其他人知道我们可能遇到的任何问题使用Abort?

感谢。

我们正在使用.Net 4.5。

1 个答案:

答案 0 :(得分:0)

这取决于您使用的绑定。如果您正在使用使用会话的绑定,则调用Close [Async]将尝试首先关闭该会话(例如,使用可靠消息传递的WSHttpBinding),然后关闭连接,否则它将在服务器端保持活动状态直到它的时间出。如果您使用的是不使用会话的绑定(即BasicHttpBinding),那么它们就非常相同。