Bir Microsoft .Net ikili desantizasyon başarısızlığı kaynak türünü açığa çıkarmak için bir çalışma zamanı platformunun nasıl çalınacağı hakkında bilgi arıyorum..Net İkili Deserialization Başarısızlık tespiti/forensics
BinaryFormatter.Deserialize(StreamingContextStates.CrossMachine)
kullanırken ve türlerden biri geçerli ikili dosyalarda mevcut değil; Bir hata atmak yerine, .NET [TypeLoadExceptionHolder]
nesnesini ekler. Özellikle koleksiyonlar için bu derhal sorun yaratmaz. Ardından, uygulama katmanları arasında iletim için toplama serileştirildiğinde; platform bir "serileştirme hatası" alır, çünkü [TypeLoadExceptionHolder]
serileştirilemez. Dolayısıyla ortaya çıkan hata, soruna neden olan kaynak türüne ilişkin ipuçları sağlamak için işe yaramaz. Şimdi avlanma (zaman emmek) hangi geliştiricinin (yüzlerce) milyonlarca platformda yeni bir tür eklediğini görmeye devam ediyor.
Bu sorun, platform oturum önbelleğini desteklemek için kullanılan seri hale getirme akışı nedeniyle bazı sıklıkta gerçekleşir. Kod oldukça sık ve artan bir şekilde dağıtılmaktadır. Müşteri sayfası istekleri, dağıtım penceresi sırasında kod tabanının eski ve yeni sürümleri arasında geri dönebilir. Yeni bir türün dikkatsiz bir şekilde tanıtılması, eski versiyondaki sayfa isteklerinin patlamasına neden olacaktır. Çalışma zamanı açısından zengin hata/tuzak sağlama hakkında herhangi bir fikir takdir edilecektir.
(SerializationException)
Type 'System.Runtime.Serialization.TypeLoadExceptionHolder' in Assembly 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable.
- at System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType type)
- at System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type type, StreamingContext context)
- at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo()
- at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter)
- at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter)
- at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo)
- at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck)
- at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean fCheck)