单向WCF调用后,在Service Proxy块上调用Close()

时间:2010-08-03 16:34:36

标签: c# wcf

我有一个简单的Fire和Forget服务操作,可以正常工作并且不会阻塞。但是,当我尝试关闭服务代理时,它将阻塞,直到单向调用完成。这是预期的行为吗?

客户代码:

var serviceProxy = new MyServiceProxy();
serviceProxy.OneWayCall();
serviceProxy.Close();  // This blocks until OneWayCall() is finished.

服务

[ServiceContract]
public interface IMyService {
   [OperationContract(IsOneWay = true)]
   void OneWayCall();
}

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class MyService : IMyService {
   public void OneWayCall() {
      // Stuff and things
   }
}

2 个答案:

答案 0 :(得分:3)

是 - 取决于您的服务正在使用的绑定/配置以及您是否以任何方式使用会话。有关导致阻止的配置的信息,请参阅以下链接:

WCF Best Practice #5: One-way is not always really one-way

希望有所帮助

答案 1 :(得分:1)

为了完整起见;以下是微软对此行为的评价:

Clients Blocking with One-Way Operations