Closed
Description
I can't update an application from NHibernate 5.1.4 to 5.2.2 (I've also tested 5.2.0). If I update and try to serialize an ISession
the following exception is thrown in some cases:
System.Runtime.Serialization.SerializationException: Type 'System.Runtime.Serialization.SerializationFieldInfo' in Assembly 'mscorlib, Version=4.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.<>c__DisplayClass9_0.<GetSerializableMembers>b__0(MemberHolder _)
at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
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, SerializationBinder binder)
at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder)
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)
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph)
at <my code calling binaryFormatter.Serialize(memoryStream, session)>
Since SerializationFieldInfo
is internal in mscorlib neither my code nor NHibernate can reference it directly. But something must have changed between NHibernate 5.1 and 5.2 that causes an ISession
to indirectly contain a SerializationFieldInfo
somewhere.
I'm not sure why some sessions cause this issue for me and others don't. I haven't been able to find a specific entity that causes it yet.
My application targets Framework 4.7.1 and I'm currently on the 4.7.2 runtime (Windows 10 1709).