为什么在Fiddler中的请求中可见的cookie在Request.Cookies集合中不可用?

reg*_*ike 2 asp.net forms-authentication .net-4.0 .net-2.0 single-sign-on

我正在使用相同的域但不同的子域在.NET 2.0站点和.NET 4.0站点之间进行SSO.在一台机器上的开发环境中一切正常,但我无法让4.0生产站点接受2.0生产站点生成的auth cookie.这两个站点位于不同的服务器上,一个运行IIS 6,只安装了2.0框架,另一个运行IIS 7.5,安装了4.0框架.我已经阅读了其他问题的所有其他答案,这些问题指出了<machineKey>元素和<authentication><forms>元素的问题,并且相信我,所有这些东西都已正确设置,并且所有4个站点都具有与这些元素完全相同的属性值.

起初我认为这是加密的一个问题,但是当我仔细研究Fiddler发生了什么时,我发现auth cookie正在请求中正确传递,但似乎在某些时候消失了,然后不是可在Request.Cookies集合中找到.

4.0生产站点位于负载均衡器后面,但Web场中当前没有其他服务器联机.负载均衡器能否以某种方式丢弃cookie?cookie是否未添加到Request.Cookies集合中,因为它不是有效的身份验证cookie?如果是这样,为什么它不合法?

总而言之,当我在请求的页面上执行以下操作时:

HttpCookie AuthCookie = Request.Cookies.Get(".SSOAUTH");

AuthCookie为null,即使我可以在Fiddler的请求标头中看到具有该名称的cookie.

reg*_*ike 5

由于每台服务器上的加密算法不同,身份验证票证可能无效.当某些MS安全更新应用于一个服务器而不是另一个服务器时,可能会发生这种情况 如果cookie不包含有效值,则不会将其添加到Request.Cookies集合中,即使它在请求中传递.