【问题标题】:Get the .ASPXAUTH cookie value programmatically II以编程方式获取 .ASPXAUTH cookie 值 II
【发布时间】:2019-11-24 19:51:12
【问题描述】:

我正在尝试以编程方式检索 ASPXAUTH cookie,但没有成功。在此论坛上发布的 similar question 并没有帮助。

我的代码如下所示。一个已知的问题是确保为请求分配一个 CookieContainer,我已经这样做了。此外,我可以在调试器中运行 Web 应用程序并查看请求是否有效——用户确实已通过身份验证并调用了 FormsAuthentication.SetAuthCookie()

我的代码如下所示。在最后一行中,response.Cookies 始终为空(为简洁起见,删除了 usingclose() 语句)。

对 stevemegson 的回应:

  • 不,response.Headers 集合不包含“Set-Cookie”标头
  • 太棒了!如果我查询 CookieContainer,cookie 确实存在:

    CookieCollection cookies = cookieContainer.GetCookies(new Uri(BaseUri));
    Cookie cookie = null;
    foreach (Cookie c in cookies)
    {
        if (c.Name == ".ASPXAUTH")
        {
            cookie = c;
            break;
        }
    }
    return cookie;
    

原始代码:

string uri = string.Format("{0}/Account.aspx/LogOn", BaseUri);
CookieContainer cookieContainer = new CookieContainer();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.CookieContainer = cookieContainer;
request.Method = "POST";
string postData = string.Format("UserName={0}&Password={1}&RememberMe=true", UserName, Password);
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Cookie cookie = response.Cookies[".ASPXAUTH"];  // Collection is always empty; returns null!!

【问题讨论】:

    标签: c# cookies httpwebrequest


    【解决方案1】:

    看起来没有什么明显错误,但接下来我要检查的是:

    如果您阅读response.Headers 的内容,您能看到Set-Cookie 标头吗?如果可以避免的话,您并不真的想从标头中解析 cookie 值,但这将确认标头至少恢复正常。

    如果你直接用cookieContainer.GetCookies(request.RequestUri)查询CookieContainer,你能看到cookie吗?

    【讨论】:

    • 见上面的编辑。我确实可以通过调用 cookieContainer.GetCookies() 来检索 cookie。这不能回答为什么 response.Cookies 是空的,但它解决了我的直接问题。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 2011-05-17
    • 2022-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多