2012-07-03 20 views
1

场景:我的常规门户是使用ASP.NET和登录页面在IIS中托管的。在通过WCF服务成功登录后,会话令牌存储在HTTPContext.Current.Session下的mytokenASP.NET Silverlight新标签页会话为空(键丢失)

门户页面托管iframe中的Silverlight应用程序。 SL应用程序使用System.Windows.Browser.HtmlPage.Window.Navigate()打开一个新选项卡。

该选项卡应该提供一个文件供下载。被调用的页面是一个aspx页面。它访问HTTPContext.Current.Session["mytoken"]以获取当前会话令牌。

这对所有我的客户,除了一个正常工作。

问题:在这一位客户处,下载选项卡从HTTPContext.Current.Sessions["mytoken"]得到null。我添加了一条痕迹来确认。它在IE或Firefox中都不起作用。

直接在Web服务器上调用时,下载页面正常工作。每个客户都有一个非常相似的设置,它在任何地方都可以工作,但在一个地方。

有人知道该找什么吗?该会话如何在除一个网站之外的所有网站上共享?

感谢您的帮助!

+0

该用户是否禁用了Cookie? –

+0

可能是http://stackoverflow.com/questions/1382791/asp-net-what-to-do-if-current-session-is-null – herzmeister

回答

0

我们找到了我们问题的原因。它与在URL中使用IP地址和/或机器名称有关。

如果门户使用http://machine1/portal/main.aspx并且新标签使用http://123.345.789.123/portal/download.aspx,则不起作用。或者相反。在这种情况下,似乎会话不共享,即使IP地址是属于机器名称的那个。

我在SL应用程序的配置中拥有硬编码下载链接的基础URL。所以它不会基于它自己的根URL来动态构建下载aspx的URL。

我现在用Application.Current.Host.Source及其属性SourceSchemePort构建在Silverlight的cllient飞的基本URL。

现在一切都像魅力一样运作。