1
votes

I am sending a post request from an ASP.NET MVC 2.0 Controller to another site on the same domain using HttpWebRequest. I am sending username and password to logon to the site. That site uses forms authentication. So it sets authentication cookie. But when I get response in HttpWebResponse object, I find cookie neither in cookie container nor inside header (no Cookie or Set-Cookie header found). Let me add some code snippet here used in the MVC controller:

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);

Please note that I am not using cookie container and cookie header at the same time in HttpWebRequest.

I don't understand what I am missing here to get authentication cookie in web response.

1

1 Answers

0
votes

Try to use

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

instead of adding cookie as a header.