Тайм-аут службы WCF, когда еще не запущен - PullRequest
1 голос
/ 21 декабря 2009

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

...