在ASP.NET Web中添加多个集Cookie标头

在ASP.NET Web中添加多个集Cookie标头,web,asp.net-web-api,cookies,Web,Asp.net Web Api,Cookies,我面临一个问题 添加多个时,将Cookie标题设置为响应 headers.Add("Set-Cookie", "a=b;Path=/;"); headers.Add("Set-Cookie", "c=d;Path=/;"); 实际上,它们是组合在一起的,并且只有一个标头与逗号分隔的cookie一起发送 Set-Cookie: a=b;Path=/;,c=d;Path=/; 根据它是一个有效的语法。 但它不是根据,它不赞成RFC2109 此外,最新的浏览器也不支持这种逗号分隔的语法。在IE9、

我面临一个问题

添加多个时,将Cookie标题设置为响应

headers.Add("Set-Cookie", "a=b;Path=/;");
headers.Add("Set-Cookie", "c=d;Path=/;");
实际上,它们是组合在一起的,并且只有一个标头与逗号分隔的cookie一起发送

Set-Cookie: a=b;Path=/;,c=d;Path=/;
根据它是一个有效的语法。 但它不是根据,它不赞成RFC2109

此外,最新的浏览器也不支持这种逗号分隔的语法。在IE9、Firefox 13和Google Chrome 20上测试

所有这些浏览器都只使用第一个cookie

请参阅下面的示例项目

我想找到一些解决办法

我希望有两个不同的Set Cookie

我试着写一些MessageInspector来重写HTTP头。我找不到如何访问该标题

有什么想法吗


p.S.使用的技术:Web API

根据codeplex()上的回答,此问题为已知问题,与WCF自托管相关,应通过移动到IIS托管来修复

这是标记为的WCF 4问题无法解决


发现另一个结果相同的问题。

您可以使用HttpContext.Current.Response.SetCookie

using System.Web;


HttpCookie foo = new HttpCookie("foo", "true");
HttpContext.Current.Response.Cookies.Add(foo); 

HttpCookie bar = new HttpCookie("bar", "true");
HttpContext.Current.Response.Cookies.Add(bar);
这将在响应中添加多个集cookie头

编辑:另外,您应该添加

<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true"/>


在您的web.config中

在codeplex上引发了一个错误。仅供参考,这里有一点禁止在单个标题下使用逗号分隔的Cookie:“源服务器可以在单个响应中包含多个Set-Cookie标题字段……源服务器不应将多个Set-Cookie标题字段折叠到单个标题字段中。”-来自