2

Windowsの起動時に開始する.netサービスがあり、サービスの開始に失敗することがあります(完全にランダムです)。

イベントビューアの表示:A timeout was reached (30000 milliseconds) while waiting for the MYSERVICE service to connect.

手動で(Windowsログオン後に)サービスを開始するとサービスが開始されないマシンでも、正常に開始されます。

私のstartメソッドは非常に基本的で、実際の起動ロジックで新しいスレッドを開始するだけです(通常は非常に高速です)。

私のサービスには.net3.5sp1が必要であり、これらの問題が発生しているマシンはwin7x64です。.net Frameworkと関係があるのではないかと思いますが、その方法がわかりません。これはクライアントマシンで発生しており、彼は.net4クライアントプロファイルをインストールしています。

何か案は?

4

4 に答える 4

3

私はこのような問題を抱えています。通常、起動時のマシン負荷が原因です。たとえば、他の多くのサービスも開始しているため、SQLServerでこのエラーが発生しました。

これを修正する簡単な方法の1つは、サービスを遅延モードで開始するように設定することです。これにより、サービスはより少ないCPUとHDの負荷で開始されます。

于 2012-05-31T15:45:23.933 に答える
1

ほとんどの .Net ベースのサービスが起動時に失敗するという同様の問題が Windows 10 でも発生しましたが、後で手動で問題なく起動できました。何らかの理由で、.NET で記述されたサービスは Windows 10 での開始に時間がかかりますが、この修正は、Windows 7 を含むすべてのバージョンの Windows で機能します。既定では、サービスが応答せずに開始するのに 30 秒以上かかる場合、サービスは Windows によって終了されます。

レジストリでその動作を 60 秒に変更できました。次の場所に移動します。

HKLM\SYSTEM\CurrentControlSet\Control\

まだ存在しない場合は、"ServicesPipeTimeout" (マイナス引用符) という名前の DWORD (32 ビット) キーを作成します。その値を 60000 (10 進数) に設定します。これは、ミリ秒単位で 60 秒に相当します。

これを自動化するためにregfileを作成しました:

Windows レジストリ エディタ バージョン 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control] "ServicesPipeTimeout"=dword:0000ea60

メモ帳に貼り付けて、.reg ファイルとして保存するだけです。

これは開始の遅延ではなく、開始後にサービスが応答するために与えられる時間の増加です。これにより、複数のマシンでの問題が修正されました。残念ながら、.NET サービスの開始に時間がかかり、終了してしまう理由はまだわかりません。ただし、これはマイクロソフトのバグであり、必ずしもユーザーが間違っているとは限りません...

于 2016-10-04T19:05:45.980 に答える
1

別のサービスに依存している場合は、依存関係を設定してください。

于 2012-05-31T16:30:48.457 に答える
0

この問題に苦しんでいる人のために、低速の Windows 10 マシンの一部でまったく同じ問題が発生しました。この問題は、config ファイルで generatePublisherEvidence を false に設定することで解決できました。

詳細については、こちらをご覧ください。 -service-application-while-the-system-is-doing-a-revocation-check-of-the-certificate-over-the-internet/

于 2019-02-02T18:06:15.483 に答える