Время ожидания клиента WCF - PullRequest
1 голос
/ 15 февраля 2011

У меня есть приложение Silverlight, которое подключается к службе WCF.

Если я открою открытое соединение в начале приложения и скажу, дайте ему 10 минут или около того, прежде чем клиент придет для вызова методавремя ожидания истекло.

Я понимаю, что изменить время ожидания в web.config очень просто.

Однако, что я ищу, чтобы служба WCF оставалась активной, чтобы сказать,5 минут после того, как мыльный клиент был закрыт.Я подумал о том, чтобы, возможно, запустить фоновый поток в Silverlight, который вызывает метод WCF, который ничего не делает, но это выглядит довольно странно.

Есть ли более профессиональный способ сделать это?

Спасибо

1 Ответ

1 голос
/ 15 февраля 2011

Вы можете изменить InstanceContextMode на signleton и запустить сервис в конструкторе сервисов.Использование режима signleton означает, что ваш сеанс никогда не истекает.

[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]

Другое решение заключается в изменении InstanceContextMode на PerSession и установке InactivityTimeout примерно на 1 час.

<bindings>
    <wsHttpBinding>
      <binding name="WSHttpBinding" >
        <reliableSession inactivityTimeout="01:00:00" enabled="true" />
      </binding>
    </wsHttpBinding>
  </bindings>

ОБНОВЛЕНИЕ (после чтенияВаш комментарий): Вы также можете установить inactivityTimeout = "infinite".

...