Сессия потеряна при открытии окна IE из приложения, размещенного в Outlook - PullRequest
1 голос
/ 28 апреля 2010

Приложение ASP.NET (фактически с Silverlight, но это не имеет значения) размещается в Outlook как домашняя страница папки. В этом приложении есть ссылка, чтобы открыть всплывающее окно, которое открывает отдельное окно IE, а не в Outlook.

Проблема в том, что в этом случае кажется, что сеанс ASP.NET потерян. При вызове службы ASP.NET в Session ничего нет, а Session._id отличается. Я подозреваю, что в Outlook есть файлы cookie, отличные от IE.

Как сохранить сеанс при открытии всплывающего окна IE из Outlook? Может быть, передать идентификатор сессии через URL, или настроить это в web.config?

Обратите внимание, что я не хочу сеансов без файлов cookie.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2010

Я бы попытался передать значение файла cookie ASP.NET_SessionId пользователя в URL-адресе из Outlook, затем на странице, открытой в IE, проверить это значение в URL-адресе и продублировать файл cookie ASP.NET_SessionId в ответе до загрузки страница (возможно, в IHttpModule до того, как сессия даже была загружена для запроса).

Я не уверен на 100%, что это сработает в случае, если в ASP.NET есть встроенная защита от взлома сеансов, которая не позволит вам каким-либо образом вручную дублировать cookie сеансов, но я бы начал с этого.

0 голосов
/ 28 апреля 2010

Я сталкивался с этой проблемой в прошлом и так и не смог ее обойти, поскольку браузер в outlook работает в совершенно ином процессе, и это даже не типичная среда IE. У меня были проблемы с сквозной аутентификацией, если я вспомнил.

Когда такое же поведение выполняется в IE напрямую, оно фактически открывает другое окно, используя тот же сеанс.

Чтобы воссоздать процесс в IE, происходящий в Outlook, просто откройте ветку IE и перейдите в свое приложение. Затем откройте новое окно IE, щелкнув ярлык (не вызывая его из текущей сессии IE) и скопировав и вставив ссылку в адресную строку. По сути, это то, что делает Outlook.

...