У меня есть сервис 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, но я уверен, что вы все уже поняли это;)