2012-08-02 17 views
8

Orada buna benzer birçok soru vardır ... ama onlar bu belirli bir sorunu var nasıl göremiyorum:Microsoft.Web.Services3.StateManager nedeniyle oturum durumu serileştirilemiyor.

açılamıyor:

ben ile başlayan bir hata döndüren bir webcoder var oturum durumunu serileştirmek için. 'StateServer' ve 'SQLServer' modunda, ASP.NET oturum durumu nesnelerini serileştirir, ve sonuç olarak seri hale getirilemez nesneler veya MarshalByRef nesneleri izinli değildir. Aynı kısıtlama 'Özel' modundayken özel oturum durumu deposu tarafından yapılırsa aynı kısıtlama geçerlidir.

Yani, this söz gibi sorular Serileştirilecek yapamaz ne olduğunu bulmak, SerializationException arayın ve seri hale getirmek için. basit Sesler ... ama bunun için baktığımda, bu bulmak:

[SerializationException: Meclis 'Microsoft.Web.Services3 yazın 'Microsoft.Web.Services3.StateManager' , Sürüm = 3.0.0.0 , Kültür, PublicKeyToken = 31bf3856ad364e35' ]. seri hale getirilebilir olarak nötr işaretlenmemiş = aslında StateManager getirilmeye çalışıyor gibi

Bu beni karıştırır ... sadece o sakladığını öyle ... sesler İçinde başka bir şey StateManager serileştirilemiyor mu? Eğer öyleyse, ne olduğunu öğrenmenin bir yolu var mı? Yoksa StateManager'ın gerçekten bir sebepten dolayı seri hale getirilmesi gerekiyor mu? (Şüpheliyim ki bu çok açık bir şekilde söylemiyorum ... üzgünüm ... sorularınız varsa, onlara cevap vermek için elimden gelenin en iyisini yapacağım.)

Ayrıca dikkat etmem gereken bir şey de NCache'yi bir oturum deposu sağlayıcısı olarak kullanmak, ki bu muhtemelen bir şekilde ilişkili olabilir gibi görünüyor. Ama bunun benim gördüğüme neden olabileceği açık değil.

+0

Bu çok garip. Belirli bir kod satırına sabitleyebilir misiniz? Her yöntem çağrısında ya da sadece belirli olanlarda olur mu? –

+0

Ne yazık ki, ne de. Sadece bazen olur ve üst üste birkaç kez olmasına rağmen, sonra gider ve bundan sonra yeniden üretemeyiz, bu yüzden izlemesi zordu. – Beska

+0

Açıkça oturum durumuna soktuğunuz veya oturumun bir destek deposu olarak kullanıldığı her şeyi incelediğinizi ve yanlışlıkla bir StateManager'ı oturuma sokmadığınızı varsayalım. (Bunu yapıyor olsaydın, muhtemelen bir desen daha göreceksin). NCache'yi kullandığınızı söylediğinizden beri, o şirketle konuşmaya ve şirket forumlarını gözden geçirmeye başlamıştım. –

cevap

1

Özel bir nesneyi serileştiriyorsanız, sınıfı öznitelikle süslediğinizden emin olun. Bu olmadan, oturum durumuna getirdiğiniz herhangi bir nesnede, seri hale getirici başarısız olur. Muhtemelen sakladığınız eşyayı izole etmeli ve özelliklerini kontrol etmeli ve bu özelliğe sahip olmalıdır.