Frage

Ich habe eine Website, die in IIS 7.0 in einem integrierten V4.0 -Anwendungspool ausgeführt wird. Ab heute bekomme ich die folgende Ausnahme im Windows -Event -Protokoll. Die Website ist für 1 Monat online und ich habe diese Ausnahme noch nie zuvor erhalten. Ich bekomme die Ausnahme in der gleichen Minuten in jeder Stunde, was ein bisschen seltsam ist.

Ein möglicher Grund:

Ich habe eine Bibliothek, die ich erstellt habe, die ich dynamisch lade.

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

Diese Bibliothek hat einen Hinweis auf Solrnet.

Haben Sie eine Idee, wie das Problem sein kann oder wie Sie mehr in die Suche nach einer Lösung untersuchen können?

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)
Ich habe diesen Fehler mit einer starken Erstellung neuer Ordner und neuen Bilddateien in einem Ressourcenordner in Verbindung gebracht, der sich im selben Ordner wie die Website befindet. Ich weiß, dass ASP.NET den Anwendungspool im Falle einer Ordnerlöschung neu startet. Ist es möglich, dass etwas passiert ist, weil dieser neue Ressourcenordner erstellt wurde und ASP.NET -Assemblys irgendwie neu laden?

Mauricio Scheffer sagte: @dorin: Dann ist das eigentliche Problem die kreisförmige Abhängigkeit. Ich empfehle, eine neue Frage dazu zu stellen.

Ich habe das Problem mit zirkulärer Abhängigkeit gelöst und erhalte immer wieder den gleichen Fehler in den Windows -Ereignisprotokollen.

Zuerst bekomme ich Unable to find assembly 'SolrNet, Version=0.4.0.1001, Culture=neutral, PublicKeyToken=bc21753e8aa334cb' Und dann startet das Web Applicatioin neu.

3 bis 10 Sekunden bevor ich eine Ausnahme in Windows -Protokollen erhalte, habe ich eine Expzetion in meinen Site -Protokolldateien identifiziert, die von Entity Framework geworfen wurden, da ich versucht habe, ein Element mit demselben Primärschlüssel wie vorhanden einzufügen. Die Ausnahme wurde im Code nicht behandelt, sondern aufgrund der CustomErrors -Einstellungen von ASP.NET behandelt

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

Kann dies etwas mit dem Fehler in Windows -Protokolldateien zu tun haben?

War es hilfreich?

Lösung

Ich habe diese Aussage in einem Blog -Beitrag gefunden, der neben dem Thema auch darüber spricht Warum ein Bewerbungspool sinken könnte

"Eine nicht behandelte Ausnahme in einem Thread, das nicht einer Anforderung zugeordnet ist, nimmt den Prozess ab. Dies tritt auch dann auf, wenn Sie über die Anwendung_Eerror -Methode ein Handler -Setup haben."

Für einige Arten von Anfragen erstelle ich 8 neue Threads aus den Anforderungs -Threads, um 8 verschiedene Kerne meines Solr gleichzeitig abzufrage. In einer dieser Kerne bekam ich eine Ausnahme, die ich in diesem Thread nicht gehandhabt habe und das mich in das veröffentlichte Problem gebracht hat.

Ich hoffe, dass dies jemand anderem hilft, wenn sie auf einen ähnlichen Fehler stoßen. Vielen Dank Jungs für die Hilfe. Aufgrund Ihrer Antworten habe ich meinen Code verbessert und andere Fehler entdeckt und behoben, die sich nicht mit der Frage beziehen. Außerdem begann ich mehr darüber nachzuschauen, wie ASP.NET die Montage lädt, was für eine große Hilfe gedacht war.

Andere Tipps

Wo wurde die Baugruppe installiert? War in GAC oder in Bin -Ordner? Hat der Hosting -Anbieter seine Einstellungen geändert? Versuchen Sie, Prüfpfade in der Konfigurationsdatei festzulegen, wobei CLR nach DLL sucht.

Haben Sie sich daran erinnert, die Montage zum Arbeitsverzeichnis Ihrer Bewerbung hinzuzufügen?

Es muss da sein, damit der Serializer ihn findet und die Typen lädt.

Kopieren Sie es einfach manuell in Explorer oder schreiben Sie eine Methode, die die Datei in das Arbeitsverzeichnis kopiert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top