Silverlight、WCF AspNetCompatibilityRequirements和ASPNET会话状态未共享

Silverlight、WCF AspNetCompatibilityRequirements和ASPNET会话状态未共享,wcf,silverlight,session,Wcf,Silverlight,Session,我有一个Silverlight应用程序,它通过一个按钮在新的浏览器窗口中打开一个aspx页面 我想将一些用户名/密码详细信息从Silverlight传递到aspx页面。我的理解是,我应该使用WCF服务来设置会话状态,然后可以从aspx页面检索会话状态 我已经遵循了我认为正确的步骤,但是aspx页面拒绝看到Silverlight设置的状态 我所做的是 创建了一个设置System.Web.HttpContext.Current.Session[Thing]的WCF服务 在该服务上,在web.conf

我有一个Silverlight应用程序,它通过一个按钮在新的浏览器窗口中打开一个aspx页面

我想将一些用户名/密码详细信息从Silverlight传递到aspx页面。我的理解是,我应该使用WCF服务来设置会话状态,然后可以从aspx页面检索会话状态

我已经遵循了我认为正确的步骤,但是aspx页面拒绝看到Silverlight设置的状态

我所做的是

创建了一个设置System.Web.HttpContext.Current.Session[Thing]的WCF服务 在该服务上,在web.config上设置AspNetCompatibilityRequirements=Required,并设置aspNetCompatibilityEnabled=true 我的Silverlight应用程序能够使用此WCF服务成功地设置和检索会话信息

但是,当我在aspx页面上获取会话[Thing]时,它是空白的。另外,如果我在aspx页面上设置Session[Thing],Silverlight将无法获得它

这就好像两人有不同的会议-为什么

提前谢谢
Matt

据我所知,如果在新的浏览器窗口中打开页面,它将创建一个新会话。共享会话的唯一希望是在web服务器级别创建一个共享对象


你为什么不把这个州当作一个问号来传递呢?或者使用SL在HtmlHost元素中打开页面?

Silverlight客户端与之对话的WCF服务是否可能位于不同的web应用程序ie中,是否存在多个web项目?默认的进程状态提供程序实际上是每个appdomain,因此,如果它们在不同的应用程序中,您将在两个appdomain中拥有会话状态的两个副本。如果是这样的话,只需将服务代码移动到与页面相同的webapp中,生活就好了。我想不出任何其他解释-我已经做了很多次了,没有遇到任何问题。

传递的信息是aspx页面正在运行的报表的身份验证详细信息,因此我不想使用查询字符串或cookie来保存这些信息。我已经从ComponentOne查看了HtmlHost,但这不也给了我同样的问题,即将信息传递到HtmlHost中的aspx页面吗?您是否查看了传递的SessionId?您可以将其传递给其他人以获取存储的数据。服务和aspx页面调用中的值真的不同吗?会话的唯一问题是,我必须删除并重置IIS 7上的身份验证模块,以获取HTTP处理程序的用户凭据。会话ID相同。我想我可以在服务器上用SQL持久化数据,但我希望保持简单。现在我只记得我的HTTP处理程序也遇到了这个问题。我在Session对象中保存了文件,它对我的IE8运行良好,但对于FF或IE7,会话总是空的:我求助于将会话保存到我需要保存文件的磁盘上的丑陋的hack。是的!事实就是这样。我在另一个项目中使用了我的服务,并在其中添加了此会话管理服务。我将会话管理服务移到了aspnet应用程序中,它现在运行良好-谢谢!