我的工作以最快的方式来写从一个的WebHttpBinding WCF自托管控制台应用程序REST服务饼干。 我准备的“设置cookie”,但只有第一个Cookie会在浏览器(在Windows中使用Firefox 11.0)设置以及“过期”的价值。
var expiry = DateTime.Now.AddMonths( 6 );
var outresp = WebOperationContext.Current.OutgoingResponse;
outresp.Headers.Add( HttpResponseHeader.SetCookie , "cookie1=fd9416ea-2705-4d44-be76-f2f7b95e6b13; cookie2=7d489e69-d9c9-4b8d-a4b1-bce0da1c5966;expires=" + expiry );
我也试图把第一个cookie,第二个,没有工作,要么之间的逗号:
outresp.Headers.Add( HttpResponseHeader.SetCookie , "cookie1=fd9416ea-2705-4d44-be76-f2f7b95e6b13;, cookie2=7d489e69-d9c9-4b8d-a4b1-bce0da1c5966;expires=" + expiry );
我剪下来,并发射了小提琴手:
outresp.Headers.Add( HttpResponseHeader.SetCookie , "foo=foovalue;,bar=barvalue;" );
和提琴手表明这一点:
Response sent 27 bytes of Cookie data:
Set-Cookie: foo=foovalue;,bar=barvalue;
This response did not contain a P3P Header.
Validate P3P Policies at: http://www.w3.org/P3P/validator.html
Learn more at: http://www.fiddler2.com/redir/?id=p3pinfo
它告诉我,我不是在.NET方面格式化的东西,使饼干接受的浏览器。
我怎样才能得到所有的饼干逼到第一个值的浏览器insetad? 我错过了什么?
谢谢。
[编辑]
我把这个问题给微软的支持,并了解到这一点:
认为“设置Cookie”是被改写的到一个单一的cookie线的事实被记录为.NET框架4.0,也框架4.5微软内部的错误。 在微软WCF开发组,错误被列为“关闭”和“不会解决”。
据微软称,唯一的解决方法是从移动自托管到IIS中托管,然后直接使用(IIS)Response对象(即不具有的bug不同的代码路径)。