Ошибка обратного вызова WCF - что происходит с сеансом?
Просто пытаюсь понять, что может случиться, если что-то пойдет не так с WCF. У меня есть реализация моего контракта на обслуживание, объявленная с InstanceContextMode of PerSession...
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Multiple)]
Звонки происходят следующим образом:
Мой клиент вызывает сервер и вызывает GetServerUTC(), чтобы вернуть текущее время UTC сервера. Это односторонний вызов, и сервер перезвонит клиенту, когда он будет готов (тривиально в этом случае просто вернуть текущее время!)
Сервер перезванивает клиенту и для целей тестирования в реализации обратного вызова на клиенте я выкидываю исключение.
Это происходит необработанным в клиенте (для целей тестирования), и клиент аварийно завершает работу и закрывается.
На сервере я обрабатываю обработчик сбойных событий в ICommunicationObject...
obj.Faults += new EventHandler(EventService_Fapted);
Вопросы...
Будет ли это убить сеанс для текущего соединения на сервере.
Я предполагаю, что я свободен делать то, что я хочу в этом методе, например, ведение журнала или что-то еще, но я должен сделать что-то конкретное здесь, чтобы завершить сеанс, или WCF справится с этим?
С точки зрения лучшей практики, что я должен делать, если обратный вызов нарушен? Означает ли это, что "что-то случилось с вашим клиентом" и это конец, или я что-то упустил здесь?
Кроме того, есть ли другие обработчики с ошибками, с которыми я должен работать.
Я много читал о WCF, и мне кажется, что что-то расплывчато, если что-то идет не так. В настоящее время я внедряю конечный автомат на моем клиенте, который будет управлять соединением и определять, может ли действие пользователя произойти в зависимости от того, существует ли соединение с сервером - или это избыточно.
Любые советы будут действительно оценены;)
1 ответ
Я узнал, что время сеанса истечет в соответствии с настройками ваших сеансов. Странно, я заметил, что после сбоя клиент по-прежнему может вызывать другие методы в том же сеансе.