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 在执行任何操作之前执行的操作非常有帮助。

结果:我已经加载了 RSACryptoServiceProvider,它加载了一个 dll,该 dll 加载了另一个试图通过网络连接验证自己的 dll。它正在运行的盒子被锁定,网络连接超时,导致加载 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 回答