8

ABCpdfを使用してHTMLファイルからPDFファイルを作成するコマンドラインプロセスがあります。v5(非常に古い、サポートされなくなった)からv8にアップグレードしようとしていますが、ABCpdf 8をインストールし、新しいDLLを使用するようにアプリケーションを更新した後、変換に1秒もかからなかったプロセスに気付きました。今では20秒以上かかります。

コードにいくつかのトレース呼び出しを追加しましたが、プログラムがABCpdf 8 DLLからオブジェクトを参照しようとするポイントは、物事がかなり長い間一時停止する場所であるように見えます。コードがそのポイントを超えると、これまでと同じように高速に実行されます。

私が持っている質問は、サードパーティのライブラリを参照しようとすると、CLRの速度が大幅に低下する原因は何でしょうか。ABCpdf 8 DLLがGACにあり、実行可能ファイルと同じディレクトリにあることを確認しました。

前もって感謝します。

4

3 に答える 3

5

手足に出て、私に推測させてください:

これは、(送信)インターネット接続のないサーバーで実行しています。

コンポーネントには厳密な名前が付けられ、暗号化キーで署名されています。証明書がチェックされています(証明書がまだ有効で信頼できるかどうか、失効リストがチェックされます)。これは、インターネット接続がないためにタイムアウトになります。

これを確認したい場合は、デバッガー(WinDbg?)を接続し、いずれかのスレッドで次のスタックトレースを確認します。

0e82c1b4 7c822124 ntdll!KiFastSystemCallRet
0e82c1b8 77e6bad8 ntdll!NtWaitForSingleObject+0xc
0e82c228 73ca64ec kernel32!WaitForSingleObjectEx+0xac
0e82c254 73ca6742 cryptnet!CryptRetrieveObjectByUrlWithTimeout+0x12f

チェックを有効にするデフォルトでこれを破ったWindowsServerエディションのServicePackリリースがありました。レジストリ設定を使用して無効にすることができます。

ASP.NETハング:Authenticode署名されたアセンブリを参照してください:

ああ、そのページは(明らかに)解決策にリンクしていませんでした:

于 2012-02-06T19:56:25.967 に答える
3

それが暗号化の問題である場合は、次のapp.configエントリを使用して解決できます。しかし、これはコンピュータにDNSがあり、他のインターネット接続が利用できない場合にのみ問題になります(ファイアウォール)。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
  <generatePublisherEvidence enabled="false"/>
</runtime>  
</configuration>
于 2012-02-06T20:10:48.087 に答える
0

Geckoエンジンを使用すると、最初のPDFを作成するのに45秒かかるという非常によく似た問題がありました。一度始めたら大丈夫でした。

この問題は、prodサーバーに発信接続がなかったために発生していました。これを修正するには、タイムアウトを1秒に設定するように変更できるグループポリシー設定があります。見る:

http://technet.microsoft.com/en-us/library/cc753863.aspx

これを行う方法の手順については。

于 2014-03-19T22:54:42.310 に答える