1

私は基本的に以下を持っています:

partial class OperationWindowsService : ServiceBase
{
public static void Main(string[] args)
{
Console.WriteLine("Starting app.");
//...build opservice
if (Environment.UserInteractive)
 {
   Console.WriteLine("interactive");
   var task = opservice.StartConsole(args);
}else
 {
    ServiceBase.Run(opservice);
    logger.LogInfo("ServiceBase.Run Called");
 }

}
//... normal onstart overrriden
}

コンソール アプリケーションとして実行するか、ボックスで Windows サービスとして実行すると、すぐに起動します。一部の WindowsXP ボックスでは、「アプリの起動」までに 45 秒かかります。または任意のログが表示されます。一部のボックスは同じハードウェア/イメージであるため、速度と関係があるとは思えません。

最初の行がヒットする前にアプリケーションを開始するのに45秒かかる理由について、誰かが私に洞察を与えることができますか?

4

1 に答える 1

2

ProcessMonitor は、exe が何かを実行する前に実行内容を確認するのに非常に役立ちました。

判明したこと:ネットワーク接続を介して何らかの方法で自分自身を認証しようとする別のdllをロードしたRSACryptoServiceProviderをロードしました。それが実行されているボックスがロックダウンされ、ネットワーク接続がタイムアウトになり、dll の読み込みに遅延が発生します。

修正: app.config- でこれを設定します。

<runtime>
    <generatePublisherEvidence enabled="false"/>
</runtime>

詳細については、http: //blogs.msdn.com/b/tess/archive/2008/05/13/asp-net-hang-authenticode-signed-assemblies.aspxを参照してください。

于 2012-07-25T16:57:02.740 に答える