后续调用时的C#WCF通道超时

时间:2017-02-28 11:09:55

标签: c# wcf soap

我有一个C#app使用WCF调用Soap客户端。对服务的第一次调用成功,但此后的任何调用都会失败。

设置客户端的代码是:

public WebserviceHelper(string username, string password, string webserviceURL)
{
    var binding = new BasicHttpBinding();
    binding.MaxBufferPoolSize = 2147483647;
    binding.MaxBufferSize = 2147483647;
    binding.MaxReceivedMessageSize = 2147483647;
    binding.OpenTimeout = new TimeSpan(0, 1, 0);
    binding.ReceiveTimeout = new TimeSpan(0, 1, 0);
    binding.SendTimeout = new TimeSpan(0, 1, 0);

    var endpoint = new EndpointAddress(webserviceURL);
    var channelFactory = new ChannelFactory<EntityAPISoap>(binding, endpoint);

    SoapClient = new EntityAPISoapClient(binding, endpoint);
    SoapClient.Endpoint.Behaviors.Add(new CustomEndpointBehavior(username, password));

    var isAlive = SoapClient.isAlive();
    Console.WriteLine(SoapClient.State); //Opened
    isAlive = SoapClient.isAlive(); //timeout exception
}

第一次调用isAlive会立即返回,第二次调用超时时出现此异常:

  

请求频道在等待回复后超时   00:01:00。增加传递给Request或者调用的超时值   增加Binding上的SendTimeout值。分配给的时间   此操作可能是较长超时的一部分。

我已经增加了超时,但是它只需要更长的时间来响应,无论如何服务器都会在一秒内响应,所以1分钟就足够了。

0 个答案:

没有答案