2010-05-12 92 views

回答

2

简短的回答是否定的。这是IIS的有意限制,以防止人们依赖于不可靠的东西。

在市场上,您会发现各种硬件负载均衡器,它们将提供基于SSL会话ID的服务器持久性等功能,但由于SSL重新协商可能随时发生,所以它们不能很好地工作。例如,在Internet Explorer 8中,对于打开到网站的每个标签,将协商一个新的SSL会话。您可以期待其他多进程浏览器的类似行为。所以,我必须强调,不应该为任何类型的用户标识目的使用SSL会话标识。这就是说 - 如果你真的需要一些专门任务的SSL会话ID信息,我建议使用Apache,mod_ssl和mod_proxy作为你的IIS系统的前端。稍微摆弄一下,你可以强制mod_ssl为你提供会话ID,然后你可以添加到代理请求到你的IIS服务器作为查询字符串参数....或者你可以将它存储在数据库中。

+0

thx,我不知道IE执行重新谈判,我的默认使用是不可适用的已知... – 2010-05-22 10:02:41

+0

就像进一步的FYI,我挖了一个MS Exchange团队中的一个家伙的博客文章,触及此问题如何影响OWA部署: http://blogs.msdn.com/brad_hughes/archive/2009/10/15/internet-explorer-8-impacts-owa-load-balancing-scenarios.aspx – 2010-05-22 13:25:17

0

添,

你真的“只是”试图检索会话ID字符串或切换到SSL时,你也许失去所有的会话信息?这将是一个非常常见的问题,因为在使用“InProc”会话存储时,服务器端的会话会丢失,并且客户端上的会话Cookie可能在未存储在公共域中时丢失。

因此,你应该切换到状态服务器或SQL服务器会话管理Web.config文件,例如:

<sessionState mode="SQLServer" 
    cookieless="true" 
    regenerateExpiredSessionId="true" 
    timeout="30" 
    sqlConnectionString="Data Source=MySqlServer;Integrated Security=SSPI;" 
    stateNetworkTimeout="30" /> 

除此之外,我真的不知道为什么你不应该能够也以SSL模式检索HttpContext.Current.Session.SessionID

某些MSDN链接:

也许这有助于以某种方式。

致以问候

+0

嗨,thx回答,但我不是在寻找ASP.NET SessionId,但为SSL会话标识符(阅读http://www.eventhelix.com/realtimemantra/networking/ssl.pdf) – 2010-05-21 11:55:14

+0

好吧蒂姆,现在我明白了。然后就忽略我的回复。我认为如果这些信息保存在某个地方,唯一的地方可能就是HTTP头。 “HttpRequest.ServerVariables”包含有趣的预定义变量,如:“ALL_RAW”(所有Http标题)等。请参阅:http://msdn.microsoft.com/en-us/library/ms524602%28VS.90%29.aspx也许这有助于。 – thmshd 2010-05-21 12:38:42