HttpWebResponse中缺少表单身份验证Cookie

时间:2015-07-15 19:08:42

标签: asp.net-mvc authentication cookies

我正在使用HttpWebRequest从ASP.NET MVC 2.0 Controller向同一域上的另一个站点发送一个post请求。我发送用户名和密码登录该网站。该站点使用表单身份验证。所以它设置了身份验证cookie。但是当我在HttpWebResponse对象中得到响应时,我在cookie容器或内部头文件中都找不到cookie(没有找到Cookie或Set-Cookie头)。让我在MVC控制器中添加一些代码片段:

HttpWebRequest httpRequest = (HttpWebRequest) WebRequest.Create(url);
httpRequest.Method = "POST";
httpRequest.ContentType = "application/x-www-form-urlencoded";
httpRequest.ContentLength = postData.Length;

if (httpRequest.CookieContainer == null)
{
    //httpRequest.CookieContainer = new CookieContainer();
}
httpRequest.Headers.Add(HttpRequestHeader.Cookie, "a=b");
var streamWriter = new StreamWriter(httpRequest.GetRequestStream());
streamWriter.Write(postData);
streamWriter.Close();

HttpWebResponse httpResponse = (HttpWebResponse) httpRequest.GetResponse();

string postBody = "";
using (StreamReader reader = new StreamReader(httpResponse.GetResponseStream()))
{
    postBody = reader.ReadToEnd();
}
return this.Content(postBody);

请注意,我在HttpWebRequest中没有同时使用cookie容器和cookie标头。

我不明白我在这里缺少什么来获取网络响应中的身份验证cookie。

1 个答案:

答案 0 :(得分:0)

尝试使用

        request.CookieContainer.Add(new Cookie("a", "b"));

而不是将Cookie添加为标题。