【发布时间】:2017-04-06 03:07:01
【问题描述】:
我需要使用 OWIN API 来设置具有多个值的 cookie。
这可以使用HttpCookie 类来完成,如下所示:
var cookie = new HttpCookie("MyCookie");
cookie ["CustomField1"] = HttpUtility.UrlEncode(customValue1);
cookie ["CustomField2"] = HttpUtility.UrlEncode(customValue2);
this._httpContext.Response.Cookies.Set(cookie);
如何使用 OWIN ResponseCookieCollection 类创建此 cookie?
https://msdn.microsoft.com/en-us/library/microsoft.owin.responsecookiecollection(v=vs.113).aspx
这个类有一个Append 方法来添加一个新的cookie 和值,但是不清楚如何添加一个具有多个值的cookie。任何帮助将不胜感激。
【问题讨论】:
-
collection.Append("MyCookie", $"CustomField1={HttpUtility.UrlEncode(customValue1)}&CustomField2={HttpUtility.UrlEncode(customValue2)}"); -
感谢@Romoku 的回复。我认为您的示例会导致 cookie 具有单个值。在 Fiddler 的 Headers 选项卡中查看 cookie 时,它显示在一行中,而使用
HttpCookie类创建的 cookie 显示在 Fiddler 中,每个值都在单独的行中。也许是因为使用ResponseCookieCollection类会导致等号和 & 字符的 url 编码,但我看不到任何阻止它被 url 编码的选项。 -
看起来
ResponseCookieCollection正在对值进行编码。如果需要,您可以直接写入标题。