我们可以从SIlverlight应用程序访问Asp.Net中的Session变量吗?

时间:2011-01-10 07:31:05

标签: silverlight

我们可以从SIlverlight应用程序

访问Asp.Net中的Session变量吗?

3 个答案:

答案 0 :(得分: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文件,它可以帮助完成这种非常简单的服务器端工作。

答案 1 :(得分:2)

Silverlight应用程序正在客户端浏览器上运行,因此您无法从中访问Session对象。

Session是asp.net为其创建的每个会话创建的对象 - 它使用cookie或url来识别用户会话。

答案 2 :(得分:0)

AnthonyWJones上面的回答很有效。我只需要对我的情况做一个小改动。 initParams变量实际上是键值对,应该这样指定,以便从Silverlight代码中正确访问它:

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

自2011年上一个答案以来,这可能发生了变化。这是根据.Net 4.5和Silverlight 5。