1

场景:我的通用门户使用 ASP.NET 和登录页面托管在 IIS 中。通过 WCF 服务成功登录后,会话令牌存储HTTPContext.Current.Sessionmytoken.

门户页面在 iframe 中托管 Silverlight 应用程序。SL 应用程序使用System.Windows.Browser.HtmlPage.Window.Navigate().

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

这对我所有的客户都很好,除了一个。

问题:在这个客户中,下载选项卡null来自HTTPContext.Current.Sessions["mytoken"]. 我添加了一条痕迹来确认这一点。它不适用于 IE 或 Firefox。

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

有人知道要寻找什么吗?除了一个站点之外,如何在所有站点共享会话?

谢谢你的帮助!

4

1 回答 1

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 客户端中动态构建基本 URL。

现在一切都像魅力一样。

于 2012-07-04T10:02:15.953 回答