我开发了一个基于 .NET 的 Windows 服务,它使用部分托管(C#)和非托管代码(C/C++ 库)。
在某些域环境中(例如域 abc.com 内的 Win 2k3 32 位服务器),有时服务需要超过 30 秒才能启动(尤其是在操作系统重新启动时),因此无法启动服务。我怀疑它与企业级安全性有关,但我不确定。
http://msdn.microsoft.com/en-us/library/aa720255%28VS.71%29.aspx
我尝试了以下方法但没有成功: - 通过将 using 指令尽可能远离 servicebase 实现(尤其是 xml 命名空间 - 知道会导致加载延迟)来延迟加载引用 - 延迟加载和配置 log4net - 通过预编译代码使用 ngen - 延迟工作线程的启动 - 添加/删除清单 + 内部设置的 decencies - 对二进制文件进行签名/取消签名 - 使用配置设置(有很多设置,所有的范围级别都设置为 application )稍后尽可能 - 将所有依赖项添加到 GAC
我还没有尝试为实现 Main 方法的类添加安全要求。我没有尝试实现我自己的配置加载器,因为在检查了自动生成的代码之后,我注意到设置类是单调的,它会在调用时获取它的实例。
通过完全删除 log4net 依赖,它可以工作,但这不是一个选项。
当网卡被禁用时,服务会立即启动。