2010-04-28 35 views
1

ASP.NET作爲文件夾主頁在Outlook中託管ASP.NET應用程序(實際上使用Silverlight但無關緊要)。在這個應用程序中有一個打開彈出窗口的鏈接,它打開一個單獨的IE窗口,而不是在Outlook中。從Outlook中託管的應用程序打開IE窗口時會話丟失

問題是,在這種情況下,似乎ASP.NET會話丟失。對ASP.NET服務的調用在Session中沒有任何內容,而Session._id則不同。我懷疑Outlook有不同於IE的Cookie。

如何從Outlook中打開IE彈出窗口時保留會話?可能通過URL以某種方式傳遞會話ID,或者在web.config中配置它?

請注意,我不想要無Cookie會話。

回答

0

我遇到過這個問題,從來沒有找到解決辦法,因爲在Outlook中的瀏覽器運行在一個完全不同的過程,它甚至不是一個典型的IE環境。如果我記得,我也有通過身份驗證的問題。

當直接在IE中完成相同的行爲時,它實際上會使用同一個會話打開另一個窗口。

要重新創建在Outlook中發生的IE進程,只需打開IE windown並轉到您的應用程序。然後通過單擊快捷方式(不是從當前IE會話生成它)並複製並粘貼鏈接到地址欄來打開一個新的IE窗口。這基本上是Outlook正在做的事情。

0

我會嘗試從Outlook中傳遞用戶的ASP.NET_SessionId cookie的URL中的值,然後在IE中打開的頁面上檢查URL上的該值,並在加載之前在響應中複製ASP.NET_SessionId cookie該頁面(可能在會話甚至已經爲請求加載之前在IHttpModule中)。

我不是100%確定這可以在ASP.NET有一些內置會話劫持安全的情況下工作,這會阻止你以某種方式手動複製會話cookie,但這就是我要開始的地方。

相關問題