13

今週、説明できない奇妙な問題に遭遇しました。サードパーティのアセンブリ (Xceed Grid およびその他のコンポーネントの一部) の署名済みバージョンを使用するようにアプリケーションを切り替えたところ、アプリケーションの開始時間がトイレに入ってしまいました。アプリケーションが署名付きアセンブリを読み込むたびに、読み込みに 30 秒かかりました。アプリケーションの起動が 5 秒から 90 秒以上になりました。ここで一体何が起こっているのですか?

その他の情報:

  • これは、.NET 3.5 SP1 で実行される WinForms アプリです。
  • コンピューターにはインターネット接続がありませんでした (意図的に、セキュリティのために)。
4

7 に答える 7

17

Jason Evans の投稿には答えが含まれていますが、リンクの形式になっています。ここに実際のソリューションを投稿するのが良いと思いました:

実行可能ファイルと同じフォルダーにファイル Appname.exe.config を作成します (ここで、Appname は実行可能ファイルの名前です。開発の場合、これはデバッグ出力フォルダーにあります)。これは、メイン構成ファイルに他のエントリがないことを前提とした xml ファイルを示しています。ファイルが既にある場合は、必要に応じて新しいセクション/テキストを追加するだけでよいと思います。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <runtime>
        <generatePublisherEvidence enabled="false" />
    </runtime>
</configuration>
于 2010-01-13T19:03:14.637 に答える
15

これらのリンクを見てください:

彼らは助けるかもしれません。システムの構成は、.NET フレームワークがアセンブリを検証するために多くの余分な作業を行っていることを意味している可能性があります。このような場合は、それほどうるさくないように構成できます。

于 2009-10-24T17:50:33.797 に答える
6

他の誰かがこの投稿に出くわした場合に備えて、問題をもう少し追跡しました.

マシン上の既存の CRL がタイムアウトし、まだ新しい CRL で更新されていない場合、プロセスを実行するたびに CRL がチェックされるようです。これは、 http://crl.microsoft.com/pki/crl/products/CodeSignPCA.crlで CRL にアクセスして有効期限を確認することでテストできます。動作しない IE 内でプロキシを構成します。有効期限を過ぎたマシンの日付を設定し、アプリケーションを再テストします。

NIC が無効になっている場合、CRL はチェックされません。

NIC にゲートウェイがない場合、CRL はチェックされません。

プロキシが有効でゲートウェイがある場合、CRL がチェックされ、プロキシに問題がある場合は、このタイムアウトが発生します。

インターネットに正常に接続すると、CRL が更新され、当面は問題ありません。

私のアプリケーションは、.NET 2.0 でいくつかの古い Xceed コンポーネントを使用していました。

于 2011-09-13T03:48:56.340 に答える
1

「ステップオーバー」でビジュアルスタジオからアプリケーションを起動してみてください。これにより、各アプリをステップオーバーしてコードが開始されるため、何がそんなに時間がかかるかを確認できます。私はかつてこれを持っていましたが、私のSQLサーバーが本当に台無しになっていることがわかりました。

時間がかかる理由を見つけるもう 1 つの方法は、読み込みコードにブレークポイントを散らばらせて、ボトルネックが何であるかを確認することです。アプリケーションが最初のようになるまでに90 秒かかる場合は、おそらく XCeed を使用するか、署名済みアセンブリをロードします。

ところで、アプリケーションをプロファイリングするためのより良い方法があることは承知していますが、この迅速で汚い方法は、そのような問題をデバッグするのに非常にうまく機能し、効率的です

于 2009-10-24T18:22:54.197 に答える
1

署名を検証する必要があるため、署名されたアセンブリの読み込みは、署名されていない対応するアセンブリよりも確実に遅くなりますが、これは完全に無視できるはずです。

5秒から90秒に経過?? アセンブリの作成者に連絡して、署名のみを変更したかどうかを尋ねる必要があると思います:-)

于 2009-10-24T17:47:50.273 に答える
1

アセンブリ証明書が検証されるようにセキュリティ設定が設定されていると思います。そのため、Web にアクセスして証明書を検証しようとし、タイムアウトを待機する可能性があります (30 秒が非常に一般的なタイムアウト値です)。

その 30 秒間に何が起こるかを見れば、これを確認できます。私の推測では、この 90 秒間で CPU の使用と HDD へのアクセスはほとんどないはずです。CPU の使用率が高いか、HDD に拘束されている場合は、別の問題です。

ところで:別のオプションは、HDDが完全にいっぱいで、アセンブリが非常に断片化されている場合です(ただし、その場合、90秒は私が聞いたよりも長くなります)。

于 2009-10-24T17:55:33.113 に答える
0

おそらく、署名されたアセンブリは NGEN されていませんが、署名されていないアセンブリは NGEN されています。

于 2009-10-24T17:48:58.760 に答える