2010-01-23 78 views
2

我有一个客户端应用程序使用基于cookie的身份验证与ASP.NET Web服务进行通信。 (客户端调用一个登录方法,该方法设置一个持久性cookie,然后在登录会话中跨请求重新使用该cookie)。HttpWebRequest丢失cookie

这一直工作良好一段时间,但我已经开始从一个新客户端使用的几台机器获得错误报告,似乎表明该cookie未成功地被双向传输。 (登录请求全部成功,但所有后续请求都失败,并且302重定向到登录资源)

我正在使用CookieContainer,我手动附加到每个HttpWebRequest,以确保Cookie保留在每个请求。

这些机器上是否有拦截/阻止cookie传输的“安全”软件? (使用SSL的I am)。如果是这样,是否有什么可以做的,以告诉正在发生什么?

+0

你确定你将*相同*'CookieContainer * *实例*附加到每个HttpWebRequest中吗? 对于“我用来确保cookie在每个请求中保留”的含义是什么?你如何确保? – DxCK 2010-01-23 21:30:22

+0

你能嗅出与提琴手的沟通吗? – 2010-01-23 21:32:28

+0

是的,我正在使用相同的容器......它在99%的机器连接上工作得很好,只有少数根本无法工作。 (该引用意味着我将相同的cookiecontainer附加到每个Web请求中,以便各个请求共享相同的Cookie集合 – homeInAStar 2010-01-23 21:33:18

回答

0

与安全软件甚至可以在您的数据包中看到如果您使用SSL完全不同。 SSL数据在进入数据包形式之前应该进行加密;通常它们在使用send()到套接字之前被加密。除非你有一些真棒安全软件破坏了SSL加密,并且可以查看数据包内部,否则这是不可能的。

每次都是同一台机器出现故障吗?或者有些机器有时会随机失败,有些机器在其他时间失败?如果是后者,可能是服务器上发生了什么,而不是客户端。

+0

同一套3台机器一直出现故障当这些机器的用户切换到其他机器时,一切似乎都可以正常工作。我部署了一些更新的诊断程序,希望能够从这些机器中捕获更多信息。 – homeInAStar 2010-01-24 16:07:59

+0

您可以为您的应用程序启用tracelogging。请参阅:http:// fe rozedaud.blogspot.com/2009/08/tracing-with-systemnet.html。然后查看日志文件以了解Cookie未被发送的原因。 – feroze 2010-01-25 02:32:05

+0

另外,是否有可能在客户端和服务器之间有负载平衡器?因此,如果机器M1正在响应中设置cookie,但如果后续请求要M2机器,则M2显然不知道如何处理该cookie,并可能会丢弃它。 – feroze 2010-01-25 19:49:14