-
Notifications
You must be signed in to change notification settings - Fork 174
Open
Labels
need-helpNeed help of experts to solve this issueNeed help of experts to solve this issue
Description
We have a WCF service application hosted in IIS, which uses MsgPack for serialization in Redis.
Every time IIS recycles the application pool after 20 minutes of inactivity, we get the following exception when calling MsgPack for deserialization:
The type initializer for 'MsgPack.Serialization.EmittingSerializers.SerializationMethodGeneratorManager' threw an exception. System.TypeInitializationException: The type initializer for 'MsgPack.Serialization.EmittingSerializers.SerializationMethodGeneratorManager' threw an exception. ---> System.Runtime.InteropServices.COMException: Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
at System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(RuntimeAssembly containingAssembly, Boolean emitSymbolInfo, String name, String filename, StackCrawlMarkHandle stackMark, IntPtr& pInternalSymWriter, ObjectHandleOnStack retModule, Boolean fIsTransient, Int32& tkFile)
at System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(RuntimeAssembly containingAssembly, Boolean emitSymbolInfo, String name, String filename, StackCrawlMark& stackMark, IntPtr& pInternalSymWriter, Boolean fIsTransient, Int32& tkFile)
at System.Reflection.Emit.AssemblyBuilder.DefineDynamicModuleInternalNoLock(String name, String fileName, Boolean emitSymbolInfo, StackCrawlMark& stackMark)
at System.Reflection.Emit.AssemblyBuilder.DefineDynamicModuleInternal(String name, String fileName, Boolean emitSymbolInfo, StackCrawlMark& stackMark)
at System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(String name, String fileName, Boolean emitSymbolInfo)
at MsgPack.Serialization.EmittingSerializers.SerializationMethodGeneratorManager..ctor(Boolean isDebuggable, Boolean isCollectable, AssemblyBuilder assemblyBuilder)
at MsgPack.Serialization.EmittingSerializers.SerializationMethodGeneratorManager.Create(Boolean isDebuggable, Boolean isCollectable, AssemblyBuilder assemblyBuilder)
at MsgPack.Serialization.EmittingSerializers.SerializationMethodGeneratorManager..cctor()
--- End of inner exception stack trace ---
at MsgPack.Serialization.EmittingSerializers.SerializationMethodGeneratorManager.Get(SerializationMethodGeneratorOption option)
at MsgPack.Serialization.EmittingSerializers.AssemblyBuilderSerializerBuilder.<>c__DisplayClass63_0.<CreateCodeGenerationContextForSerializerCreation>b__1()
at MsgPack.Serialization.EmittingSerializers.AssemblyBuilderEmittingContext.get_Emitter()
at MsgPack.Serialization.EmittingSerializers.AssemblyBuilderEmittingContext.BeginMethodOverride(String name)
at MsgPack.Serialization.AbstractSerializers.SerializerBuilder`2.BuildObjectPackTo(TContext context, SerializationTarget targetInfo, Boolean isAsync)
at MsgPack.Serialization.AbstractSerializers.SerializerBuilder`2.BuildObjectSerializer(TContext context)
at MsgPack.Serialization.AbstractSerializers.SerializerBuilder`2.BuildSerializer(TContext context, Type concreteType, PolymorphismSchema schema, SerializationTarget& targetInfo)
at MsgPack.Serialization.AbstractSerializers.SerializerBuilder`2.BuildSerializerInstance(SerializationContext context, Type concreteType, PolymorphismSchema schema)
at MsgPack.Serialization.MessagePackSerializer.CreateInternal[T](SerializationContext context, PolymorphismSchema schema)
at MsgPack.Serialization.SerializationContext.GetSerializer[T](Object providerParameter)
When I recycle the application pool manually, the problem disappears and everything is working fine. Until an automatic recycle event occurs, the problem is back.
I already force all assemblies to be loaded into the AppDomain immediately after application start with this code:
var assemblies = BuildManager.GetReferencedAssemblies().Cast<Assembly>();
Does anybody know about this behaviour?
Metadata
Metadata
Assignees
Labels
need-helpNeed help of experts to solve this issueNeed help of experts to solve this issue