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

Просто пытаюсь понять, что может случиться, если что-то пойдет не так с 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 Ответ

0 голосов
/ 31 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...