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