【问题标题】:WCF call hangs and terminates by timeout [closed]WCF调用挂起并因超时终止[关闭]
【发布时间】:2011-06-06 14:42:48
【问题描述】:

收到此消息:

这个请求操作发送到 net.pipe://127.0.0.1/MyService 做了 内收不到回复 配置超时 (00:01:00)。这 分配给此操作的时间可能 已经是较长时间的一部分 暂停。这可能是因为 服务仍在处理中 操作或因为服务是 无法发送回复消息。 请考虑增加 操作超时(通过铸造 通道/代理到 IContextChannel 和 设置 OperationTimeout 属性) 并确保服务能够 连接到客户端。

任何想法,为什么会发生?

UPD:我的服务器代码没有挂起。即使该服务器方法为空,我也有同样的例外。实际上,它不会调用事件,它开头的日志消息永远不会显示并且断点永远不会被命中。

UPD2:我的代码非常简单,在隔离的测试应用程序中运行正常

    private static void ServerStart(string channelUri)
    {
        var host = new ServiceHost(typeof(Service), new Uri(channelUri));
        host.AddServiceEndpoint(typeof(IServiceContract),
          new NetNamedPipeBinding(NetNamedPipeSecurityMode.Transport),
          new Uri(channelUri));
        host.Open();
    }

    private static void ClientStart(string channelUri)
    {
        var factory = new ChannelFactory<IServiceContract>
              (new NetNamedPipeBinding(), new EndpointAddress(channelUri));
        var proxy = factory.CreateChannel();

        proxy.StartOnServer();
    }

【问题讨论】:

  • 你调用的方法是什么?你能调试到服务中吗?

标签: .net wcf clr


【解决方案1】:

您已超过默认超时更改绑定或使您的操作更快完成。看看这个question


您的更新仍然存在配置问题。如果您的服务器代码没有被调用,但您没有得到一个开放的异常,您需要打开完全跟踪并使用 SVC 跟踪查看器。您还可以连接到服务主机事件以查看何时来电。如果您发布您的服务器和客户端配置,我们可能会提供更多帮助。

【讨论】:

  • 你错了。请参阅更新。
  • 当我在隔离的测试应用程序中运行相同的代码时,它运行正常。但我真正的应用程序托管在另一个(本机)程序中。任何想法,如何跟踪/调试问题?
  • 所以您的客户端正在尝试启动连接,然后启动服务主机?
  • @rerun,服务器在任何客户端调用之前启动。
  • 您如何托管 WCF 服务?在控制台应用程序中?客户端是否在单独的程序中?
【解决方案2】:

您的方法在服务器上执行的时间是否超过 1 分钟?

如果是这种情况会发生什么超时......

您可以在客户端的端点配置上进行设置...

<binding name="BasicHttpBinding_Binding" closeTimeout="10:01:00" openTimeout="10:01:00" receiveTimeout="10:10:00" .../>

【讨论】:

    猜你喜欢
    • 2018-03-26
    • 1970-01-01
    • 2012-05-24
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 2018-10-20
    相关资源
    最近更新 更多