Pierwszy plik cookie WCF 4.0 jest rejestrowany przez przeglądarkę
Pracuję nad najszybszym sposobem zapisywania plików cookie z usługi REST dla samokontrolującej aplikacji WCF za pomocą WebHttpBinding. Przygotowuję „Ustaw pliki cookie”, ale tylko pierwszy plik cookie jest ustawiany w przeglądarce (przy użyciu FireFox 11.0 w systemie Windows), a także wartość „Wygasa”.
<code>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 ); </code>
Próbowałem także wstawić przecinek między pierwszym plikiem cookie a drugim, który również nie działał:
<code>outresp.Headers.Add( HttpResponseHeader.SetCookie , "cookie1=fd9416ea-2705-4d44-be76-f2f7b95e6b13;, cookie2=7d489e69-d9c9-4b8d-a4b1-bce0da1c5966;expires=" + expiry ); </code>
Odcięłem to i wystrzeliłem Skrzypka:
<code>outresp.Headers.Add( HttpResponseHeader.SetCookie , "foo=foovalue;,bar=barvalue;" ); </code>
a Skrzypek pokazuje to:
<code>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 </code>
Co mówi mi, że nie formatuję rzeczy po stronie .NET, aby pliki cookie były akceptowane przez przeglądarkę.
Jak mogę umieścić wszystkie pliki cookie w insetadzie przeglądarki tylko pierwszej wartości? Co mnie ominęło?
Dzięki.
[ EDYTOWAĆ ]
Wziąłem ten problem do firmy Microsoft w celu uzyskania wsparcia i dowiedziałem się o tym:
Fakt, że „Set-Cookie” jest zmieniony w pojedynczą linię cookie jest rejestrowany jako błąd w Microsoft dla .NET Framework 4.0 i również Framework 4.5. W grupie programistycznej Microsoft WCF błąd jest wymieniony jako „zamknięty” i „nie naprawia”.
Według Microsoftu jedynym obejściem jest przejście z hostingu samodzielnego na hosting w IIS, a następnie użycie obiektu odpowiedzi (IIS) bezpośrednio (inna ścieżka kodu, która nie zawiera błędu).