我们可以从SIlverlight应用程序
访问Asp.Net中的Session变量吗?答案 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。