我有一个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分钟就足够了。