Если мне что-то не хватает, я думаю, вы захотите поймать исключение и работать соответствующим образом (например, вернуть обратный вызов с недопустимым сеансовым сообщением?).
Кроме того, вы можете реализовать тайм-аут в ожидании async обратного вызова, поэтому даже когда сессия истекла или сеть отключена, или Apocalypse разрушает сетевые коммуникации, ваш клиент может вернуть управление и сообщить пользователю.
«Пожалуйста, войдите в систему снова и попробуйте, проверьте вашу сеть и проверьте наличие каких-либо признаков конца дней».
EDIT: В соответствии с запросом обратной связи, здесь приводится более подробная информация о моих мыслях о взаимодействии между сервером и клиентом.
Основная проблема, с которой вы сталкиваетесь, заключается в том, что происходит какое-либо событие (истечение срока действия сеанса или неожиданный сбой), который мешает клиенту узнать, что сервер больше не ответит. Вы не можете планировать катастрофические сбои, но вы можете планировать недействительные сеансы, недействительные аутентификации, неверные данные и т. Д. В таких случаях сервер, вероятно, должен быть более подробным, особенно если вы работаете с моделью с тонким клиентом, который не будет делать ничего, пока сервер не вернется.
Но тогда, как справляться с реальными сбоями, когда общения не происходит? Если вы можете считать, что ошибки связи могут произойти (и я действительно предлагаю вам это сделать), вы должны сделать свой клиент достаточно умным, по крайней мере, для обработки ошибок связи. Важно, что такая вещь выполняется, потому что, прежде всего, коммуникации не такие надежные (происходят неправильные конфигурации, сбои оборудования и т. Д.). Во-вторых, когда такое происходит, вы рискуете своей функциональностью, чтобы исчезнуть или создать реальный плохой опыт работы с пользователями. Не то, чтобы ошибки были хорошим пользовательским интерфейсом, но более отзывчивыми приложениями.
TL; Сообщите нам об этом по желанию клиента и пользователю. Важно, чтобы знал, что происходит.
Не было бы проще внедрить способ возобновления активной сессии? http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/baefef0f-0f17-44d1-8990-aa517c2e2929/ – Lloyd
Извините, я как-то пропустил вставку остальных, а также выполнив активную сессию обновлять пользователя каждые N минут, используя некоторую форму фонового таймера. – Lloyd