私は、WebHttpBinding を使用して、WCF セルフ ホスト コンソール アプリ REST サービスから Cookie を書き込む最速の方法に取り組んでいます。「Cookie の設定」を準備しましたが、ブラウザー (Windows で FireFox 11.0 を使用) と「有効期限」の値に最初の Cookie のみが設定されます。
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 と 2 番目の Cookie の間にコンマを入れてみましたが、どちらも機能しませんでした。
outresp.Headers.Add( HttpResponseHeader.SetCookie , "cookie1=fd9416ea-2705-4d44-be76-f2f7b95e6b13;, cookie2=7d489e69-d9c9-4b8d-a4b1-bce0da1c5966;expires=" + expiry );
これを切り詰めて、Fiddler を起動しました。
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
これは、ブラウザーが Cookie を受け入れられるようにするために .NET 側でフォーマットしていないことを示しています。
すべての Cookie を最初の値だけのブラウザー insetad に取得するにはどうすればよいですか? 私は何を取りこぼしたか?
ありがとう。
[ 編集 ]
この問題を Microsoft にサポートを依頼したところ、次のことがわかりました。
「Set-Cookie」が単一の Cookie 行に変更されているという事実は、Microsoft 内で .NET Framework 4.0 および Framework 4.5 のバグとして記録されています。Microsoft WCF 開発グループ内では、このバグは「解決済み」および「修正予定なし」としてリストされています。
Microsoft によると、唯一の回避策は、自己ホストから IIS 内でのホスティングに移行し、(IIS) Response オブジェクトを直接使用することです (バグのない別のコード パス)。