Ошибка обратного вызова WCF - что происходит с сеансом?

Просто пытаюсь понять, что может случиться, если что-то пойдет не так с WCF. У меня есть реализация моего контракта на обслуживание, объявленная с InstanceContextMode of PerSession...

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Multiple)]

Звонки происходят следующим образом:

  1. Мой клиент вызывает сервер и вызывает GetServerUTC(), чтобы вернуть текущее время UTC сервера. Это односторонний вызов, и сервер перезвонит клиенту, когда он будет готов (тривиально в этом случае просто вернуть текущее время!)

  2. Сервер перезванивает клиенту и для целей тестирования в реализации обратного вызова на клиенте я выкидываю исключение.

  3. Это происходит необработанным в клиенте (для целей тестирования), и клиент аварийно завершает работу и закрывается.

  4. На сервере я обрабатываю обработчик сбойных событий в ICommunicationObject...

    obj.Faults += new EventHandler(EventService_Fapted);

Вопросы...

  • Будет ли это убить сеанс для текущего соединения на сервере.

  • Я предполагаю, что я свободен делать то, что я хочу в этом методе, например, ведение журнала или что-то еще, но я должен сделать что-то конкретное здесь, чтобы завершить сеанс, или WCF справится с этим?

С точки зрения лучшей практики, что я должен делать, если обратный вызов нарушен? Означает ли это, что "что-то случилось с вашим клиентом" и это конец, или я что-то упустил здесь?

Кроме того, есть ли другие обработчики с ошибками, с которыми я должен работать.

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

Любые советы будут действительно оценены;)

1 ответ

Решение

Я узнал, что время сеанса истечет в соответствии с настройками ваших сеансов. Странно, я заметил, что после сбоя клиент по-прежнему может вызывать другие методы в том же сеансе.

Другие вопросы по тегам