2011-01-10 24 views

回答

2

Silverlight應用程序的客戶端瀏覽器上運行,所以你不能從它訪問Session對象。

會話是asp.net爲其創建的每個會話創建的對象 - 它使用cookie或url來識別用戶會話。

+0

它可以做到這一點,由anthonywjones回答。 – Bahamut 2012-03-13 03:45:11

5

有兩種方法可以獲取Session變量的值。

第一個是將值包含在託管Silverlight應用程序的ASPX頁面生成的HTML中。將值添加到silverlight對象的InitParams<Param>標記中。

<param name="initParams" value="myValue=<%=Server.HTMLEncode(Session["myValue"].ToString())%>" /> 

現在在Silverlight代碼,你可以訪問該值: -

string myValue = Application.Current.Host.InitParams["myValue"]; 

以上是最可能的情況。如果您需要在執行Silverlight應用程序期間更改會話值並/或爲該變量讀取可能的更改值,那麼事情就會變得更加狡猾。

在這一點上,很多人可能會建議創建一些WCF來協助解決這個問題。或者,我可能傾向於創建一個簡單接受和/或返回一些Xml的.ashx文件,這可以協助這種非常簡單的服務器端工作。

0

AnthonyWJones上面的回答很有效。我只需要對自己的情況做一點改變。 的initParams在變量實際上是鍵值對,應該被指定爲這樣的,從您的Silverlight代碼正確地訪問它:

<param name="initParams" value="myKey1=myValue1,myKey2=myValue2" /> 

這也許因爲以前的答案改在2011年這是按照.NET 4.5和Silverlight 5.

相關問題