我正在使用可移植类库来构建服务类,我们所有的UI技术都用于与我们的服务进行通信。
这些库将支持Silverlight,Asp.Net和任何其他.Net UI技术。
由于支持Silverlight,所有调用必须是异步的。
使用Silverlight,我可以在client.Method()调用服务后立即调用CloseAsync()。
但是,我发现这与Asp.Net客户端不兼容。
我不想在已完成的代码中使用CloseAync(),因为如果正在进行多次异步调用,则可能会遇到计时问题。
我宁愿不必提出很多逻辑,例如在每个异步方法中放置一个while循环,以确保没有调用并完成CloseAsync()。
现在我正在测试只在已完成的部分中使用Abort,一切似乎都正常。
只是好奇是否有其他人知道我们可能遇到的任何问题使用Abort?
感谢。
我们正在使用.Net 4.5。
答案 0 :(得分:0)
这取决于您使用的绑定。如果您正在使用使用会话的绑定,则调用Close [Async]将尝试首先关闭该会话(例如,使用可靠消息传递的WSHttpBinding),然后关闭连接,否则它将在服务器端保持活动状态直到它的时间出。如果您使用的是不使用会话的绑定(即BasicHttpBinding),那么它们就非常相同。