Pregunta

Tengo un sitio web que se ejecuta en IIS 7.0 en un grupo de aplicaciones V4.0 integrado. A partir de hoy obtengo la siguiente excepción en el registro de eventos de Windows. El sitio web está en línea durante 1 mes y nunca antes obtuve esta excepción. Recibo la excepción a los mismos minutos en cada hora, lo cual es un poco extraño.

Alguna posible razón:

Tengo una biblioteca que creé que cargo dinámicamente.

 _searchProvider = (ISearchProvider)Activator.CreateInstance("SolrSearchProvider", "SearchProviders.SolrSearchProvider.SolrSearchProvider").Unwrap();

Esa biblioteca tiene referencia a Solrnet.

¿Tiene alguna idea de cuál puede ser el problema o cómo investigar más para encontrar una solución?

An unhandled exception occurred and the process was terminated.

Application ID: DefaultDomain

Process ID: 7192

Exception: System.Runtime.Serialization.SerializationException

Message: Unable to find assembly 'SolrNet, Version=0.4.0.1001, Culture=neutral, PublicKeyToken=bc21753e8aa334cb'.

StackTrace:    at System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo.GetAssembly()
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinaryAssemblyInfo assemblyInfo, String name)
   at System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(String objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[] typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
   at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped record)
   at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   at System.AppDomain.Deserialize(Byte[] blob)
   at System.AppDomain.UnmarshalObject(Byte[] blob)
Asocié esta falla con una gran creación de nuevas carpetas y de nuevos archivos de imagen dentro de una carpeta de recursos que se encuentra en la misma carpeta que el sitio web. Sé que ASP.NET reinicia el grupo de aplicaciones en caso de eliminación de una carpeta. ¿Es posible que algo sucediera debido a que se crea esta nueva carpeta de recursos y de alguna manera Asp.net Reloads Assecks?

Mauricio Scheffer dijo: @Dorin: Entonces el verdadero problema es la dependencia circular. Recomiendo publicar una nueva pregunta sobre eso.

Resolví el problema con la dependencia circular y sigo recibiendo el mismo error en los registros de eventos de Windows.

Primero tengo Unable to find assembly 'SolrNet, Version=0.4.0.1001, Culture=neutral, PublicKeyToken=bc21753e8aa334cb' Y luego la aplicación web se reinicia.

De 3 a 10 segundos antes de obtener una excepción en los registros de Windows, identifiqué una expcetion en los archivos de registro de mi sitio lanzados por Entity Framework porque estaba tratando de insertar un elemento con la misma clave primaria que una existente. La excepción no fue tratada en el código, sino que fue tratada por ASP.NET debido a la configuración de CustomErrors

<customErrors mode="On" defaultRedirect="/Error.aspx" redirectMode="ResponseRewrite">
    <error statusCode="404" redirect="/Error.aspx"/>
</customErrors>

¿Puede esto tener algo que ver con el error en los archivos de registro de Windows?

¿Fue útil?

Solución

Encontré esta declaración en una publicación de blog que además del tema, también habla de Por qué podría caer un grupo de aplicaciones

"Una excepción no controlada en un hilo no asociado con una solicitud eliminará el proceso. Esto ocurre incluso si tiene una configuración del controlador a través del método Application_Error".

Para algunos tipos de solicitudes, creo 8 nuevos hilos de los hilos de solicitud para hacer una consulta simultánea a 8 núcleos diferentes de mi solr. En uno de estos núcleos estaba recibiendo una excepción que no manejé en ese hilo y eso me metió en el problema publicado.

Espero que esto ayude a alguien más si encuentran un error similar. Muchas gracias chicos por la ayuda. Debido a sus respuestas, mejoré mi código y descubrí y solucioné otros errores no relacionados con la pregunta. También comencé a analizar más cómo el ensamblaje de cargas de ASP.NET, lo cual fue de gran ayuda.

Otros consejos

¿Dónde se instaló el ensamblaje? ¿Estaba en GAC o en la carpeta de contenedor? ¿El proveedor de alojamiento ha cambiado su configuración? Intente configurar rutas de sondeo en el archivo de configuración, donde CLR busca DLL.

¿Recordó agregar el ensamblaje al directorio de trabajo de su aplicación?

Tiene que estar allí para que el serializador lo encuentre y cargue los tipos.

Simplemente copielo manualmente en Explorer o escriba algún método que copie el archivo en el directorio de trabajo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top