我有一个Silverlight应用程序,在一个按钮上打开一个新的浏览器窗口中的aspx页面。
我想将一些用户名/密码详细信息从Silverlight传递到aspx页面。我的理解是我应该使用WCF服务来设置会话状态,然后可以从aspx页面检索它。
我遵循了我认为正确的步骤,但aspx页面拒绝查看Silverlight设置的状态。
我所做的是;
我的Silverlight应用程序能够成功使用此WCF服务设置(和检索)会话信息。
然而,当我在aspx页面上获得Session [“Thing”]时,它是空白的。另外,如果我在aspx页面上设置Session [“Thing”],Silverlight就不会得到它。
就好像这两个人有不同的会话 - 为什么会这样?
提前致谢 马特
答案 0 :(得分:0)
据我所知,如果您在新的浏览器窗口中打开该页面,它将创建一个新会话。您分享会话的唯一希望是在Web服务器级别创建一个共享对象(丑陋)。
为什么不直接将状态作为查询字符串传递?或者使用SL在HtmlHost
link text元素中打开页面?
答案 1 :(得分:0)
您的Silverlight客户端与之通信的WCF服务是否可能位于不同的Web应用程序中(即,是否存在多个Web项目)?默认的进程内状态提供程序实际上是每个应用程序域,因此如果它们位于不同的应用程序中,您将在两个应用程序域中拥有两个会话状态副本。如果是这种情况,只需将服务代码移动到与页面相同的webapp中,生活就很好。我想不出任何其他的解释 - 我已经做了很多次没有遇到麻烦。