2012-07-03 50 views
1

場景:我的常規門戶是使用ASP.NET和登錄頁面在IIS中託管的。在通過WCF服務成功登錄後,會話令牌存儲在HTTPContext.Current.Session下的mytokenASP.NET Silverlight新標籤頁會話爲空(鍵丟失)

門戶頁面託管iframe中的Silverlight應用程序。 SL應用程序使用System.Windows.Browser.HtmlPage.Window.Navigate()打開一個新選項卡。

該選項卡應該提供一個文件供下載。被調用的頁面是一個aspx頁面。它訪問HTTPContext.Current.Session["mytoken"]以獲取當前會話令牌。

這對所有我的客戶,除了一個正常工作。

問題:在這一位客戶處,下載選項卡從HTTPContext.Current.Sessions["mytoken"]得到null。我添加了一條痕跡來確認。它在IE或Firefox中都不起作用。

直接在Web服務器上調用時,下載頁面正常工作。每個客戶都有一個非常相似的設置,它在任何地方都可以工作,但在一個地方。

有人知道該找什麼嗎?該會話如何在除一個網站之外的所有網站上共享?

感謝您的幫助!

+0

該用戶是否禁用了Cookie? –

+0

可能是http://stackoverflow.com/questions/1382791/asp-net-what-to-do-if-current-session-is-null – herzmeister

回答

0

我們找到了我們問題的原因。它與在URL中使用IP地址和/或機器名稱有關。

如果門戶使用http://machine1/portal/main.aspx並且新標籤使用http://123.345.789.123/portal/download.aspx,則不起作用。或者相反。在這種情況下,似乎會話不共享,即使IP地址是屬於機器名稱的那個。

我在SL應用程序的配置中擁有硬編碼下載鏈接的基礎URL。所以它不會基於它自己的根URL來動態構建下載aspx的URL。

我現在用Application.Current.Host.Source及其屬性SourceSchemePort構建在Silverlight的cllient飛的基本URL。

現在一切都像魅力一樣運作。