我有自助托管的WCF服务。当InstanceContextMode设置为PerCall时,除了缓慢之外它工作得很好。 (构造函数非常重,所以非常有意义)我将InstanceContextMode设置为Single,现在它在服务启动后工作正常。但是,如果该服务仍在启动,我将收到有关未找到终点的错误。当我在PerCall模式下运行时,这不会发生。 有什么办法可以让请求等待更长时间才能启动服务吗?我已尝试在绑定上设置OpenTimeout,ReceiveTimeout和SendTimeout,但无济于事。
这是我的主叫代码:
try
{
ChannelFactory<IGatewayService> scf;
var binding = new NetTcpBinding();
binding.Security.Mode = SecurityMode.None;
scf = new ChannelFactory<IGatewayService>(binding, "net.tcp://" + settings.GatewayHost + ":" + settings.GatewayPort);
IGatewayService s;
s = scf.CreateChannel();
result = s.Submit(taskToSubmit);
(s as ICommunicationObject).Close();
}
catch (Exception exc)
{
if (log.IsErrorEnabled) { log.Error("Error submitting task to Gateway", exc); }
}
PS。我是一个WCF-noob,但我相信你们现在都已经知道了这一点;)