ASP.NET web-Anwendung nicht finden können, eine Versammlung
Ich bereitgestellt ein ASP.NET web-Anwendung Letzte Nacht, und ich, wenn ich aufwachte, an diesem morgen war es sehr langsam und würden nur gelegentlich werfen Sie einen "Service Unavailable" - Fehler.
Ich habe in der Ereignisanzeige, und es war gefüllt mit diesen Fehlern:
Ist eine unbehandelte Ausnahme aufgetreten und der Vorgang wurde abgebrochen.
Ausnahme: System.- Laufzeit.Serialisierung.SerializationException
Meldung: Unable to find assembly 'MonoTorrent, Version=0.80.0.0, Culture=neutral, PublicKeyToken=null'
Ich bin verwirrt, wie es war, perfekt funktioniert, wenn ich im Einsatz (MonoTorrent ist erforderlich, um das abrufen der Anzahl der Seeder/leecher für einen bestimmten torrent aus dem tracker - das war schön), aber es ist nicht mehr Arbeit und immer, wenn code, der verwendet MonoTorrent engagiert sich der Arbeitsprozess einfach abstürzt.
MonoTorrent.dll ist im /bin/- Verzeichnis.
UPDATE 6/4/10: ich kompiliert die MonoTorrent source-code in mit dem rest von meiner web-Anwendung, aber es stürzt immer noch, Wann immer es verwendet MonoTorrent. Nun jedoch, sagt, dass es Unable to find assembly 'OpenPeer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
. Hier OpenPeer ist der name der web-Anwendung Montage.
- 100% sicher, dass Sie bei der Bereitstellung des richtigen version der assembly?
- Yep, schwebt über der Versammlung sagt, dass es die version 0.80.0.0
- Ist der implementierten Anwendung in einem virtuellen IIS-Verzeichnis/Ordner als Anwendung markiert? Ist der bin-Ordner in das Stammverzeichnis der Web-Anwendung?
- Ja, der bin-Ordner ist im Stammverzeichnis der Anwendung. Ich habe andere Baugruppen in es wie das Recaptcha Bibliothek und Mysql.Data.dll die Belastung in Ordnung. Ich bin mir nicht sicher über das virtuelle Verzeichnis Zeug, wie kann ich das überprüfen?
- Vielleicht die Antworten auf diese Frage scheinen etwas Licht auf dein problem: stackoverflow.com/questions/747149/unable-to-find-assembly
- Die einzigen Klassen, ich kann ich denke, das wäre serialisiert und deserialisiert wäre die torrent-Datei, die bearbeitet wird... MonoTorrent.
- Können Sie uns bitte sagen, dieses problem auf der ersten ausgeführt, oder nach einigen Stunden zu laufen ?
- Ersten Lauf. Ich habe gerade umgeschichtet es dann, und es funktioniert gut, bis ich navigieren Sie zu einer Seite, die verwendet MonoTorrent, dann stürzt es ab.
- Stellen Sie sicher, dass Sie nicht verpassen keine wichtige update der windows server-Plattform.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies kann passieren, in diesen Umständen:
Den ASP.NET app erstellt ein hintergrund-thread, der eine nicht abgefangene Ausnahme. Es sieht aus wie ASP.NET fängt die Ausnahme ab und will es protokolliert im Ereignisprotokoll. Um dies zu tun, sendet er diese Ausnahme von der Web-app die app-Domäne zu seinen eigenen app-Domäne (die Voreinstellung der w3wp-Prozess). Dies muss eine Serialisierung/Deserialisierung die Ausnahme.
Wenn die Ausnahme einen benutzerdefinierten (D. H. definiert durch die Web-app), es kann nicht deserialisiert werden, in der Haupt-app-Domäne von ASP.NET da die assembly definieren, die Ausnahme ist in der Regel in den Web-app-Verzeichnis bin, nicht wo w3wp.exe ist (c:\windows\system32\inetsrv). Dies bewirkt, dass eine Serialisierung Ausnahme und w3wp abstürzt.
Gibt es Möglichkeiten, das Problem zu beheben (in eine - sehr subjektive - Reihenfolge der Präferenz):
Hinweise:
Versuchen clearing die ASP.NET temp-Dateien. Es löste einige sonderbare Probleme, bevor für mich.
Ansonsten Fusion-Protokollierung kann etwas Licht.
UPDATE: @Charlie - ich bin nicht sicher, was zu machen, von Protokollen...es sieht aus wie die fehlgeschlagene log ist von einer anderen AppDomain. Beachten Sie die AppBase auf "file:///c:/windows/system32/inetsrv/" AppName ist und w3wp.exe.
Ich bin mir ziemlich sicher, dass der Ereignisanzeige sollte zeigen Anwendungs-Id: LM/W3SVC/#/ROOT, wenn es der Standard-AppDomain, zu. An dieser Stelle, alles, was ich habe, ist zufällig errät.
Können Sie geben aus deinem screenshot text zu, so bekommen Sie einige Google Liebe....
Hier sind einige Dinge, die Sie ausprobieren können..
1.) Flush ASP.Net Temp-Verzeichnis. Starten Sie IIS neu, und recycle Anwendungspool.
2.) Stellen Sie sicher, dass Ihre web-Anwendung ausgeführt wird VOLLER VERTRAUEN wenn muss es wirklich VOLL VERTRAUEN.
3.) Nehmen Sie die Montage, verwenden Sie es in anderen asp.net Anwendung und den test ausführen der Anwendung auf einem eigenen server. Dies könnte Ihnen helfen, das problem zu diagnostizieren. Versuchen Sie auch, um den test auszuführen asp.net app auf dem gleichen server, aber in getrennten Anwendungspools.
4.) Stellen Sie sicher, dass die IIS-website, der Ihre Anwendung ausgeführt wird unter dem Benutzer-Konto mit den notwendigen Sicherheits-Privilegien. Versuchen Sie die Anwendung ausführen, unter Administratotr als Benutzer.
BEARBEITEN-1
5.) Auch überprüfen, ob die assembly-version ist die gleiche wie bereits im web.config. Wenn es einen Versionskonflikt dann können Sie AssemblyBinding Umleitung im web.config.
6.) Versuchen Sie auch registaering die Assembly im GAC und sehen, ob es richtig geladen wird.
BEARBEITEN-2
7.) Versuchen reconfigring ASP.NET -Unterstützung auf dem server oder vielleicht framework-Laufzeit neu aufsetzen könnte helfen. Dies kann nicht ein sure-shot-Lösung, aber wenn man das problem der Bedingung wollen wir versuchen, verschiedene Lösungen.
8.) Stellen Sie sicher, dass Sie nicht verpassen keine wichtige update der windows server Plattform.
LOCAL SYSTEM
die nicht helfen.web.config
. Ich habe es mir selbst, aber ich habe nicht eine version-Nummer. Ich habe nur<add assembly="MonoTorrent"/>
unter der<assemblies>
tag. Könnte das Einfluss auf irgendetwas?Ich versuchen, Ihnen einige Ideen, was ich tun, wenn ich war auf Ihrer position.
Zunächst nehme ich einen langen Blick von der MonoTorrent.dll vor einigen Tagen, dass Sie Ihre Frage, und ich sehe es heute wieder. Das habe ich gefunden und die Funktion zum laden der dll. Meine erste Meinung ist, dass etwas zu tun haben mit den Berechtigungen.
Ich hoffe, dass Sie Zugriff auf das server - Recht ?
Meine ersten Schritte, dass:
Sicherzustellen, dass Ihre monotorrent.dll aktuelle haben die richtigen Berechtigungen, um das Verzeichnis bin, Lesen und ausführen durch Ihre asp.net app. Einige Male die Kopie einer dll, nicht die Verzeichnis-Berechtigungen aber Wagen, seine eigenen Berechtigungen. Um zu überprüfen, ob die dll haben andere Berechtigungen als der rest, gerade Recht-klicken Sie und finden Sie unter Eigenschaften | Sicherheit, dann gehen Sie zum bin-Verzeichnis und das gleiche tun, und vergleichen Sie die Berechtigungen Sicherheit. Wenn Sie unterschiedlich sind, dann gelten wieder die Directory-Berechtigungen und stellen Sie sicher, dass die dll vererbt Verzeichnis.
Mein zweiter Schritt
Download der ProcessMonitor von sysinternals
http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
ProcessMonitor laufen und versuchen, neu zu erstellen die Fehlermeldung, es zu stoppen und zu analysieren, um zu sehen, wo und warum die dll bekommt der verweigerten Berechtigungen zum ausführen.
Mit dem ProcessMonitor kann man sehen, wenn es irgendeine dll kann nicht gefunden!!!
Ich check des MonoTorrent dlls und ich habe nicht gefunden, was ungewöhnlich ist. Er kerner32.dll Anrufe, und verwenden Sie unsicheren code ausführen, ok, also nichts besonderes.
Also, wenn Sie tun, die 2 Schritte zu mir und gib mir ein feedback, vielleicht kann ich noch weiter gehen. (wenn nicht lösen, indem Sie Sie und was Sie suchen)
Ich würde Ratschläge zu setup Regelmäßige Pflege wohl einmal in der Woche am Sonntag Abend usw für folgenden,
Problem ist, ASP.NET web-apps verursachen viele temp-Dateien werden Links in der Scheibe, weil der dynamischen Zusammenstellung von regex, seriliazation Baugruppen etc, solche temp-Zeug niemals gelöscht wird, und mehr und mehr junk-beginnt immer gesammelt in temp Standorten, ASP.NET geht langsamer und langsamer, und ein Zeitpunkt kommt, in dem die Datenträger-als auch Speicher-Defragmentierung erreicht sehr hohe Punkt werden die Dinge beginnen zu Versagen.
Kein Körper mag, starten Sie den server einmal in der Woche, aber ich erinnere mich, wir hatten keine Wahl, in ASP.NET 1.1 hatten wir stabiles system nach dem Neustart, jeden Tag, in ASP.NET 2.0 an, wir sind gut zu haben, ein Neustart geplant einmal in der Woche.
Ich gefunden habe, dieses problem und ich habe alles tun, was ich kann, wie das löschen von temporären Dateien, server-Neustart, löschen und hinzufügen von Referenz und ich habe auch die Projektmappe neu erstellen. Allerdings kann ich nicht die Lösung des Problems. Schließlich bewege ich meine entity-Klasse, (fast von Ihnen müssen zu serialisieren) in einen neuen Ordner, dass habe ich dem Projekt Hinzugefügt und dann ist dieses problem gelöst.
Diese Methode ist für mich arbeiten.
Ist die server-Zeitzone anders als Ihre Zeitzone? Ich habe dieses Problem bei der Bereitstellung von Ressourcen-Dateien, die compile-Zeit war in der Zukunft, so würden Sie nicht laden.
Meine Vermutung, dass Sie viel offener, aber nicht geschlossene verbindungen. Ich meine die Anschlüsse sind nicht an den pool zurückgegeben. Es sieht okay aus, wenn Sie die Anwendung starten, aber nach einiger Zeit gibt es nur mehrere Steckdosen im pool zur Verfügung und es geht langsam. Eine andere Sache - nicht geschlossene Verbindung halten DLL in den Speicher, ohne dass sich der release der hf. Versuchen Sie zu debug-Objekt der Zerstörung.
Ich weiß es ist einfach aber ich hatte dieses problem einmal und itwas denn ich hatte eine Web-Anwendung-Projekt enthält
Ordner und ich nur kopiert meine Dateien in ein
Ordner, in jedem .net web-Anwendung in der Projekt im Fenster "Eigenschaften", ein Referenz Registerkarte "Quellpfad" zur Verfügung, die standardmäßig sollte nichts werden, zählen auf Sie. aktivieren Sie diese option, und auch Registerkarte "Erstellen" in Fenster "Projekteigenschaften" die Ausgabe-Pfad werden als die selben wie bin\