【问题标题】:Calling Close() on Service Proxy blocks after One Way WCF call在单向 WCF 调用之后在服务代理块上调用 Close()
【发布时间】:2013-01-24 21:59:04
【问题描述】:

我有一个简单的 Fire and 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
   }
}

【问题讨论】:

    标签: c# wcf


    【解决方案1】:

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

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

    希望有帮助

    【讨论】:

    • 是的,我之前发现了这个,并且我一直在进行相应的配置,但是我遇到了其他问题......我可能会再次发布在这里。不过,这是一篇好文章。
    【解决方案2】:

    为了完整起见;以下是微软对这种行为的看法:

    Clients Blocking with One-Way Operations

    【讨论】:

      猜你喜欢
      • 2016-08-30
      • 2011-10-03
      • 2013-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      相关资源
      最近更新 更多