我在自定义http模块中设置Cookie时遇到问题。我正在处理BeginRequest事件并按照以下几行设置cookie:
HttpCookie myCookie = new HttpCookie(config.CookieName);
SitePrefCookie["key1"] = value1;
SitePrefCookie["key2"] = value2;
SitePrefCookie.Expires = DateTime.Now.AddDays(365);
SitePrefCookie.Domain = myDomain;
SitePrefCookie.Path = "/";
HttpContext.Current.Response.Cookies.Add(SitePrefCookie);
我知道cookie本身没有任何问题,因为如果我调用Response.Flush()或将状态设置为302(因为它是用于重定向的http模块),它将起作用。但我不能在一个请求中同时执行这两个操作,即刷新然后重定向,因为ASP.Net会抱怨已经将头发送到客户端。
我确信我可以解决这个奇怪的限制,但我只是不明白为什么在不需要重定向或刷新响应的场景中,甚至没有在响应中发回cookie。