我正在开发一个项目,用于从Amazon.co.uk上的页面中删除内容。我可以成功提交登录表单,并将Cookie存储在CookieContainer中,一切正常,我已成功登录该站点。但是,当我浏览到某些页面时,它会显示已注销,再次提示登录屏幕。我永远无法以编程方式访问该页面。
我想我可能会陷入这里报告的与.NET 4上的子域名Cookie容器相关的错误:https://connect.microsoft.com/VisualStudio/feedback/details/771651/cookiecontainer-subdomain-handling-issue-in-net-4-0#
此链接存在两个解决方法:
解决方法#1:收到带有Version = 1 Cookie的响应后,将它们作为>纯Cookie添加到新的CookieContainer中,然后使用此新容器发出后续请求。
解决方法#2:在收到针对父域的Version = 1 Cookie的响应后,再次将它们添加到同一个> CookieContainer,现在再添加到子域。
我不确定我是否理解如何实现这一点,有没有人在此之前可以与我分享解决方案?我正在运行.NET 4.0。
谢谢, 科林。
答案 0 :(得分:2)
我发现解决方法是在每个请求中重新创建CookieContainer并将版本1 Cookie修改为0:
CookieContainer newCookies = new CookieContainer();
newCookies.Add(new Uri("https://www.amazon.co.uk/"), new Cookie
{
Name = c.Name,
Version = 0,
Comment = c.Comment,
CommentUri = c.CommentUri,
Discard = c.Discard,
Domain = c.Domain,
Expired = c.Expired,
Expires = c.Expires,
HttpOnly = c.HttpOnly,
Path = c.Path,
Port = c.Port,
Secure = c.Secure,
Value = c.Value
});
似乎是MS拒绝修复它的一个令人讨厌的错误。希望这可以帮助别人!