c# - 在执行托管应用程序时,.NET 执行的最耗时的检查是什么?

标签 c# security windows-services delayed-execution

我开发了一个基于 .NET 的 Windows 服务,该服务使用部分托管 (C#) 和非托管代码(C/C++ 库)。

在某些域环境中(例如域 abc.com 内的 Win 2k3 32 位服务器)有时服务需要超过 30 秒才能启动(尤其是在操作系统重启时),因此无法启动服务。我怀疑它与企业级安全性有关,但我不确定。

http://msdn.microsoft.com/en-us/library/aa720255%28VS.71%29.aspx

我已经尝试了以下但没有成功: - 通过将 using 指令尽可能远离服务库实现来延迟加载引用(尤其是 xml 命名空间 - 知道会导致加载延迟) - 延迟加载和配置 log4net - 使用 ngen 预编译代码 - 延迟工作线程的启动 - 添加/删除 list + 礼仪设置里面 - 签署/取消签署二进制文件 - 尽可能晚地使用配置设置(有很多设置,所有的范围级别都设置为应用程序) - 将所有依赖项添加到 GAC

我还没有尝试为实现了 Main 方法的类添加安全要求。 我没有尝试实现我自己的配置加载器,因为在检查了自动生成的代码之后,我注意到设置类是一个单例并且它在调用时获取它的实例。

通过完全删除 log4net 依赖项它起作用了,但这不是一个选项。

当网卡被禁用时,服务会立即启动。

最佳答案

您通常会使用 SysInternals 的进程监视器来诊断此问题。这是一项服务这一事实使事情变得复杂。检查这个blog post进行类似的故障排除 session 。

顺便说一句,它就像 CRL(证书撤销列表)问题一样嘎嘎作响。要禁用它:控制面板、Internet 选项、高级选项卡、安全,取消选中“检查发布者的证书吊销”。

关于c# - 在执行托管应用程序时,.NET 执行的最耗时的检查是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2152718/

相关文章:

javascript - 在 Windows 10 webView 中执行 js 脚本

Java (8) 网络启动 : avoiding security popups

security - 在 iOS 上,与使用 CFStream、CFNetwork 等安全套接字相比,OpenSSL 有什么好处?

security - 小书签如何在没有交互的情况下自动运行?那是一个安全漏洞吗?

c# - 从数据库还是从内存查询?哪个更快?

c# - 安排 C# Windows 服务每天执行任务

c# - Control.invoke 和父控件

c# - 在 MVVM 中实现 ICommand 时,我遗漏了一些东西

c# - 嵌套的 RibbonApplicationMenuItem 出错

.net - 如何正确停止多线程 .NET Windows 服务?