c# - 从 Windows 服务托管的 WCF 端点的问题

标签 c# wcf startup delay

我有托管几个 WCF 端点的托管 Windows 服务。该服务设置为在 PC 重新启动时自动启动。重新启动后,我发现这行代码:

ServiceHost wcfHost1 = new ServiceHost(typeof(WCFHost1));

在服务的 OnStart() 方法中,执行时间大约在 15 到 20 秒之间。实际上我有两个这样的语句,但第二个是瞬间执行的。这是第一个需要这么长时间的。有谁知道可能导致瓶颈的原因是什么?因此,有时调用会超过 30 秒,结果 SCM 认为我的服务在尝试初始化时超时。现在,我知道我可以很容易地分离出一个线程来执行此操作并立即从 OnStart() 返回,但我想知道是什么导致了这种延迟。

这种情况在 PC 重启时服务启动时发生。如果 PC 已启动并正在运行,该服务将在不到一秒的时间内启动和停止。

最佳答案

This可能会提供更多帮助。基本上,我认为您需要弄清楚您有哪些依赖项并将它们添加到您的服务中,以便它们在您之前启动。

这只是瞎猜,但可能是 .net 框架尚未加载。或许,您可以尝试将自动启动设置为延迟自动启动,这将允许.net 框架和其他 Windows 服务有时间启动。

此外,当 .net 应用程序启动时,它会使用即时编译器进行编译。这可能正在等待 .net 对其进行编译。

最后,根据您使用的 WCF 实例的类型,您可能会遇到构造函数初始化需要一段时间的问题。

希望这对您有所帮助。

关于c# - 从 Windows 服务托管的 WCF 端点的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2726256/

相关文章:

java - 如何解决 Singleton EJB 的初始化失败

c# - 在Azure函数中使用Serilog.ILogger

c# - DLLImport 不适用于 Azure 应用服务网络。 3.1

c# - 创建没有 ip 地址的套接字连接(TCP 或 UDP)

c# - 将任何给定的函数转换为可等待的任务

wcf - DateTime参数根据时区调整

java - hadoop 无法启动从机 "fatal error"

wcf - WCF通过所有服务调用传递额外的安全性数据

c# - DataContract 运行时错误 - 类型 'myType' 无法序列化。我做错了什么?

c - ld.exe : cannot find entry symbol _start