我有以下代码:
void WriteConnectionId(HttpListenerContext context, string id)
{
var cookie = context.Response.Cookies[CookieConnectionId];
if (cookie == null)
{
cookie = new Cookie(CookieConnectionId, id)
{
HttpOnly = true,
Secure = true,
Path = "/"
};
context.Response.Cookies.Add(cookie);
}
else
{
cookie.Value = id;
}
//context.Response.SetCookie(new Cookie("lalala", "lololo"));
}
此代码正确存储客户端中“连接ID”的cookie。在Chrome控制台中,我可以在Cookie列表中看到Cookie。
但是,如果我取消注释添加额外cookie的最后一行,那么会话cookie或虚拟cookie都不会进入客户端。它们不会出现在Chrome的控制台中。
编辑:删除第一个Cookie上的“/”路径会显示第一个Cookie,但第一个和第二个Cookie中的值都会以逗号连接。
答案 0 :(得分:1)
尝试
context.Response.AppendCookie(new Cookie("lalala", "lololo"));
答案 1 :(得分:0)
我最后通过创建以下功能来修复此问题:
void FlushCookie(HttpListenerContext context, Cookie cookie)
{
var builder = new StringBuilder();
builder.Append(cookie.Name);
builder.Append("=");
builder.Append(HttpUtility.HtmlAttributeEncode(cookie.Value));
builder.Append(";");
context.Response.Headers.Add(HttpResponseHeader.SetCookie, builder.ToString());
}
这可以进一步修改以添加cookie过期,路径等。