亀岡的プログラマ日記

京都のベッドタウン、亀岡よりだらだらとお送りいたします。

.NETの起動速度を異常に制限している(かもしれない)仕様

今作っているソフトは完全にプライベートなネットワークで使うことが前提になってまして、外部ネットワークの接続はおこんないようなソフト。
そんなソフトで起こるかもな問題なのですが・・・

とにかく、スタートアップが遅かったのです。ざっと25秒くらい。
最初は遅いな-、やだなー、程度だったのですが、リリース前に問題になってプロファイラをかけてみるとなんかおかしい。
CPUが0%に寝ている状態で、ずーっと何かを待っているような挙動をします。

なんじゃこりゃ???

COMやらHW側の設定やらを見回しても異常はなく、途方に暮れていると先輩から天の啓示が。

A digitally signed .NET Framework 2.0 Windows application may start very slowly, or a Windows service may time out during startup

When you try to start a digitally signed Microsoft .NET Framework 2.0 Windows application or Windows service, the application starts very slowly. Digitally signed Windows services may time out during startup.
This problem occurs because the application must download the Certificate Revocation List (CRL) for authentication. However, a lack of network connectivity causes the download to fail by timing out. For example, a firewall may potentially block the download. When Windows first starts, the network connection is not yet initialized.

要約:電子署名されたアプリはインターネット上に認証に行くんで、うかつにネットワーク切るなよ!!いいか、絶対切るなよ!!


まさにBingoでした。
結局解決策は電子署名されていないDllを手に入れて配置しました。
そもそもクローズドなネットワークに置くんだから、まあ改竄はないでしょ、ということで。