WCF调用挂起并超时终止

时间:2011-06-06 14:42:49

标签: .net wcf clr

获取此消息:

  

此请求操作发送到   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();
    }

2 个答案:

答案 0 :(得分:1)

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


您的更新仍然存在配置问题。如果未调用服务器代码但未获得打开的异常,则需要打开完整跟踪并使用SVC跟踪查看器。您还可以挂钩服务主机事件以查看呼叫何时进入。如果您发布服务器和客户端配置,我们可以提供更多帮助。

答案 1 :(得分:0)

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

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

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

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