Hi,
Fix works perfectly, but there seems to be a problem when application adds additional cookies to response.
Please take a look at test:
[Test, Isolated]
public void CookiesWrittenOnFirstRequestShouldBeAvailableOnSecondRequest()
{
const string url = "/testpage.aspx";
const string additionalCookieName = "mc_1";
var session = new TestSession();
session.SetUser("foo", new string[0]);
var sessionKeyFromFirstRequest = "";
var firstRequest = new WebRequest(url);
firstRequest.EventHandlers.Page_PreRender += (s, e) =>
{
var page = (Page) s;
sessionKeyFromFirstRequest = page.Session.SessionID;
var newCookie = new HttpCookie(additionalCookieName);
newCookie.Values.Add("10394", "1");
page.Response.Cookies.Add(newCookie);
};
session.ProcessRequest(firstRequest);
var secondRequest = new WebRequest(url);
secondRequest.EventHandlers.Page_Init += (s, e) =>
{
var page = (Page)s;
var cookieHeaders = "Cookie header: " + page.Request.Headers["Cookie"].ToString();
Assert.AreEqual(sessionKeyFromFirstRequest, page.Session.SessionID, cookieHeaders);
Assert.NotNull(page.Request.Cookies[additionalCookieName], cookieHeaders);
};
session.ProcessRequest(secondRequest);
}
It seems like there is a problem when cookies are sent back to ASP .NET.
E.g. cookie header instead of:
Cookie: ASP.NET_SessionId=51pncynqyhc3iy452ny1cnmm; mc_1=10394
looks like:
Cookie: ASP.NET_SessionId=51pncynqyhc3iy452ny1cnmm:mc_1=10394
Note ':' instead of '; '
This totally confuses ASP .NET, session starts again and 'mc_1' cookie gets overwritten.