4

パート マネージド (C#) およびアンマネージド コード (C/C++ ライブラリ) を使用する .NET ベースの Windows サービスを開発しました。

一部のドメイン環境 (ドメイン abc.com 内の Win 2k3 32 ビット サーバーなど) では、サービスの開始に 30 秒以上かかる場合があり (特に OS の再起動時)、サービスの開始に失敗します。エンタープライズ レベルのセキュリティと関係があると思われますが、確かなことはわかりません。

http://msdn.microsoft.com/en-us/library/aa720255%28VS.71%29.aspx

私は次のことを試みましたが成功しませんでした: - using ディレクティブをサービスベースの実装から可能な限り遠ざけることで参照の読み込みを遅らせます (特に xml 名前空間 - 読み込みの遅延を引き起こすことがわかっています) - log4net の読み込みと構成の遅延 - コードのプリコンパイルngen を使用する - ワーカー スレッドの開始を遅らせる - マニフェストを追加/削除する + 内部で設定された decencies を追加する - バイナリに署名/署名解除する - 構成設定を使用する (多くの設定があり、すべてのスコープ レベルが application に設定されている) 後述可能な限り - すべての依存関係を GAC に追加します

Main メソッドが実装されているクラスにセキュリティ要求を追加することはまだ試していません。自動生成されたコードを調べた後、設定クラスがシングルトーンであり、呼び出し時にインスタンスを取得することに気付いたため、独自の構成ローダーを実装しようとしませんでした。

log4net の依存関係を完全に削除することで機能しましたが、これはオプションではありません。

ネットワーク カードが無効になると、サービスはすぐに開始されます。

4

2 に答える 2

1

通常、SysInternals の Process Monitor を使用してこの問題を診断します。これがサービスであるという事実は、問題を複雑にします。同様のトラブルシューティング セッションについては、このブログ投稿を確認してください。

それはCRL(Certification Revocation List)の問題のようです。無効にするには、[コントロール パネル]、[インターネット オプション]、[詳細設定] タブ、[セキュリティ] で、[発行元の証明書の失効を確認する] のチェックを外します。

于 2010-01-28T06:36:10.000 に答える
0

名前解決 (12.0.0.1 まで) で log4net UDP アペンダーを使用すると、起動が大幅に遅くなることがわかりました。

于 2010-01-28T06:41:03.300 に答える