3rd Party Assembly wird langsam geladen

8

Ich habe einen Befehlszeilenprozess, der mithilfe von ABCpdf eine PDF-Datei aus einer HTML-Datei erstellt. Ich versuche, von v5 (sehr alt, nicht mehr unterstützt) auf v8 zu aktualisieren, aber nachdem ich ABCpdf 8 installiert und meine Anwendung aktualisiert habe, um die neue DLL zu verwenden, habe ich bemerkt, dass der Prozess weniger als eine Sekunde dauerte dauert jetzt 20+ Sekunden.

Ich habe einige Trace-Aufrufe im Code hinzugefügt und es scheint, dass der Punkt, an dem das Programm versucht, ein Objekt aus der ABCpdf 8 DLL zu referenzieren, dort ist, wo die Dinge für eine lange Zeit anhalten. Sobald der Code an diesem Punkt vorbeikommt, läuft er so schnell wie immer.

Die Frage, die ich habe, ist: Was könnte die CLR verlangsamen, wenn sie versucht, auf eine Bibliothek eines Drittanbieters zu verweisen? Ich habe überprüft, dass die DLL von ABCpdf 8 in der GAC sowie das gleiche Verzeichnis wie die ausführbare Datei ist.

Vielen Dank im Voraus.

    
AlphaKilo 06.02.2012, 19:43
quelle

3 Antworten

5

Raus mit einem Glied, lass mich raten:

Sie führen dies auf einem Server ohne (ausgehende) Internetverbindung aus.

Die Komponente ist stark benannt und mit einem kryptografischen Schlüssel signiert. Das Zertifikat wird geprüft (die Sperrliste wird geprüft, ob das Zertifikat noch gültig und vertrauenswürdig ist). Dieses Zeitlimit aufgrund der Abwesenheit einer Internetverbindung.

Wenn Sie dies bestätigen möchten, hängen Sie einen Debugger (WinDbg?) an und bestätigen Sie den folgenden Stacktrace für einen der Threads:

%Vor%

Es gab eine Service Pack-Version für Windows-Server-Editionen, die dies durchbrochen hat, indem die Prüfung standardmäßig aktiviert wurde. Sie können es mithilfe einer Registrierungseinstellung deaktivieren.

Siehe ASP.NET Hang : Authenticode signierte Baugruppen :

Oh, diese Seite hat nicht (klar) mit der Lösung verlinkt:

sehe 06.02.2012, 19:56
quelle
3

Wenn es das kryptografische Problem ist, können Sie es lösen, indem Sie den folgenden Eintrag app.config verwenden. Aber afaik das ist nur ein Problem, wenn der Computer DNS hat, aber keine andere Internetverbindung verfügbar (Firewall).

%Vor%     
Manuel 06.02.2012 20:10
quelle
0

Ich hatte ein sehr ähnliches Problem, das bei Verwendung der Gecko-Engine 45 Sekunden dauerte, um das erste PDF zu erstellen. Einmal gestartet war es in Ordnung.

Das Problem wurde verursacht, weil unser Prod-Server keine ausgehende Verbindung hatte. Um es zu beheben, gibt es eine Gruppenrichtlinieneinstellung, die geändert werden kann, um das Zeitlimit auf 1 Sekunde festzulegen. Siehe:

Ссылка

für Schritte, wie man das macht.

    
Rocklan 19.03.2014 22:54
quelle

Tags und Links