2012-08-02 13 views
8

Istnieje wiele pytań, które są podobne do tego ... ale nie widzę w jaki sposób mają ten specyficzny problem:Nie można przetworzyć stanu sesji z powodu Microsoft.Web.Services3.StateManager?

Mam usługa, która zwraca błąd, który zaczyna się:

Nie serializować stan sesji. W trybie "StateServer" i "SQLServer", ASP.NET będzie serializować obiekty stanu sesji, , w wyniku czego obiekty nie podlegające serializacji lub obiekty MarshalByRef są niedozwolone. To samo ograniczenie ma zastosowanie, jeśli podobna serializacja jest przeprowadzana przez niestandardową składnicę stanów sesji w trybie "Niestandardowy".

więc pytania typu this wzmianki szukać SerializationException, dowiedzieć się, co jest w stanie być w odcinkach, a potem to serializacji. Dźwięki proste ... ale kiedy patrzę na nią, uważam to:

[SerializationException: Typ 'Microsoft.Web.Services3.StateManager' w Microsoft.Web.Services3 montażowych, Version = 3.0.0.0 , Culture = neutral, TokenKluczaPublicznego = 31bf3856ad364e35' nie jest oznaczony jako serializable.]

to mnie niepokoi ... to brzmi jak to faktycznie próbuje serializować StateManager ... to jest właśnie to, że ukrywa, że coś innego w środku jest StateManager nie można serializować? Jeśli tak, to czy istnieje sposób, aby dowiedzieć się, co? Czy może z jakiegoś powodu StateManager ma być serializowany? (Podejrzewam, że nie mówię tego bardzo wyraźnie ... przepraszam ... jeśli masz pytania, zrobię co w mojej mocy, aby na nie odpowiedzieć.)

Jedną z rzeczy, którą powinienem również zauważyć jest to, że jesteśmy przy użyciu NCache jako dostawcy sesji sesji, który wydaje się, że mógłby być w jakiś sposób powiązany. Ale nie jest dla mnie jasne, jak to może spowodować to, co widzę.

+0

To bardzo dziwne. Czy możesz przypiąć go do określonej linii kodu? Czy dzieje się to podczas każdego wywołania metody lub tylko niektórych? –

+0

Niestety, nie. Zdarza się to tylko czasami, i choć zdarzy się to kilka razy z rzędu, potem znika i nie możemy odtworzyć go później, więc trudno było go wyśledzić. – Beska

+0

Zakładam, że sprawdziłeś wszystko, co jawnie wprowadzasz w stan sesji lub używasz sesji jako magazynu wsparcia, a przypadkiem nie wprowadzasz do sesji StateManagera. (Prawdopodobnie zobaczysz więcej wzoru, jeśli to robisz). Ponieważ mówisz, że używasz NCache, zacznę rozmawiać z tą firmą i przeglądać fora tej firmy itp., Jeśli jeszcze tego nie zrobiłeś. –

Odpowiedz

1

Jeśli serializujesz niestandardowy obiekt, upewnij się, że ozdobiłeś klasę atrybutem. Bez tego na dowolnym obiekcie, który wprowadzisz do stanu sesji, serializator zawiedzie. Prawdopodobnie musisz wyizolować przechowywany element i sprawdzić jego właściwości oraz to, że ma on ten atrybut.

Powiązane problemy