繁体   English   中英

WCF:超时错误

[英]WCF: Timeout error

我有一段代码可以调用服务器上托管的WCF服务。

代码不断地反复遍历该方法。 (它要求一个“状态”,所以它根本不做任何工作)。

没关系,但短时间后出现错误:
发送到net.tcp:// serverName:9001 / service1的此请求操作在配置的超时(00:00:09.9843754)内未收到答复

突然之间,我根本无法访问服务器。 我将超时时间增加到1分钟,但仍然是同样的问题。 请注意,托管服务的程序没有做任何其他事情,只是提供了“状态”。 因此,WCF服务应用程序忙起来不是问题。

我认为这是调用服务的代码的问题,因为当我重新启动应用程序时,它可以正常连接到服务...直到再过一小段时间后,我再次收到超时错误。 出于这个原因,我也不认为这是网络错误,因为当我重新启动应用程序一段时间后就可以了。

这是我用来致电服务的代码。 每次调用后我都需要处置ChannelFactory还是要做什么?

        NetTcpBinding binding = new NetTcpBinding(SecurityMode.Message);
                binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;

                EndpointAddress endPoint = new EndpointAddress(new Uri(clientPath));

                ChannelFactory<IClient> channel = new ChannelFactory<IClient>(binding, endPoint);
                channel.Faulted += new EventHandler(channel_Faulted);
                IClient client = channel.CreateChannel();

                ((IContextChannel)client).OperationTimeout = new TimeSpan(0, 0, 10);
                ClientStatus clientStatus = client.GetStatus();

完成调用GetStatus后,您必须关闭客户端连接。 最好的方法是使用using块。 但是您也可以在呼叫客户端之后执行类似的操作。GetStatus()

ClientStatus clientStatus = client.GetStatus();

try
{
    if (client.State != System.ServiceModel.CommunicationState.Faulted)
    {
         client.Close();
    }
}
catch (Exception ex)
{
    client.Abort();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM