后续呼叫的C#WCF通道超时

后续呼叫的C#WCF通道超时,c#,wcf,soap,C#,Wcf,Soap,我有一个C#应用程序使用WCF调用Soap客户端。对服务的第一次调用成功,但此后的任何调用都失败 设置客户端的代码是: public WebserviceHelper(string username, string password, string webserviceURL) { var binding = new BasicHttpBinding(); binding.MaxBufferPoolSize = 2147483647; binding.MaxBufferS

我有一个C#应用程序使用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
}
publicWebServiceHelper(字符串用户名、字符串密码、字符串webserviceURL)
{
var binding=新的BasicHttpBinding();
binding.MaxBufferPoolSize=2147483647;
binding.MaxBufferSize=2147483647;
binding.MaxReceivedMessageSize=2147483647;
binding.OpenTimeout=newtimespan(0,1,0);
binding.ReceiveTimeout=新的时间跨度(0,1,0);
binding.SendTimeout=新的时间跨度(0,1,0);
var endpoint=新的端点地址(webserviceURL);
var channelFactory=新的channelFactory(绑定,端点);
SoapClient=新的EntityAPISoapClient(绑定,端点);
添加(新的CustomEndpointBehavior(用户名、密码));
var isAlive=SoapClient.isAlive();
Console.WriteLine(SoapClient.State);//已打开
isAlive=SoapClient.isAlive();//超时异常
}
isAlive
的第一个调用立即返回,第二个调用超时,但出现以下异常:

请求通道在之后等待答复时超时 00:01:00. 增加传递给请求调用的超时值或 增加绑定上的SendTimeout值。分配给……的时间 此操作可能是较长超时的一部分


我增加了超时时间,但响应时间更长,而且服务器会在一秒钟内响应,因此1分钟就足够了。

可能正在限制呼叫?实际上,您在非常非常短的时间内执行相同的调用两次。尝试添加
线程睡眠(3000)
控制台.WriteLine(SoapClient.State)之后看看这是否改变了什么。我已经尝试过了,没有区别。实际上,SOAP服务也在本地运行(这是一个Java Mule项目),我可以从其他项目类型调用它,没有问题。对不起,我没有使用WCF和Java Mule的经验。这可能是由WCF如何处理或恢复引起的。尝试检查当前正在使用哪些并发和会话模式。如果没有为特定实例正确设置这些设置,则可能会导致超时。您是否在visual studio中运行该服务?该服务在Mule(Java)中运行,客户端在visual studio中运行,可能会限制调用?实际上,您在非常非常短的时间内执行相同的调用两次。尝试添加
线程睡眠(3000)
控制台.WriteLine(SoapClient.State)之后看看这是否改变了什么。我已经尝试过了,没有区别。实际上,SOAP服务也在本地运行(这是一个Java Mule项目),我可以从其他项目类型调用它,没有问题。对不起,我没有使用WCF和Java Mule的经验。这可能是由WCF如何处理或恢复引起的。尝试检查当前正在使用哪些并发和会话模式。如果没有为特定实例正确设置这些设置,则可能会导致超时。是否在visual studio中运行该服务?该服务在Mule(Java)中运行,客户端在visual studio中运行