当前位置:  开发笔记 > 编程语言 > 正文

.NET应用程序启动非常慢 - cryptnet.dll尝试访问百慕大的IP

如何解决《.NET应用程序启动非常慢-cryptnet.dll尝试访问百慕大的IP》经验,为你挑选了1个好方法。

我已经构建了一个.NET控制台应用程序,它可以运行好几年.从11月23日开始,在生产中运行需要花费大量时间(15秒)(从Visual Studio运行时它可以正常工作).

我试图追溯Process Monitor(ProcMon)发生了什么,我发现了这种模式:

应用程序正常启动

应用程序加载 cryptnet.dll

应用程序进入睡眠状态,我看到一系列TCP Reconnect消息,机器试图通过HTTP(似乎在百慕大)达到206.53.176.17.

应用程序查询信息 cryptnet.dll

应用尝试通过HTTP连接到206.53.176.78.

15秒后,一切都重新开始工作(我看到一个访问,crypt32.dll因为应用程序继续加载时发生的第一件事).

我完全迷失了:问题与我的机器无关,但是所有同事如何使用我的工具遇到同样的问题.这似乎与在加载应用程序时完成的Authenticode签名验证有关.

实际上,当尝试通过资源管理器查看EXE 的数字签名时,单击" 详细信息"需要15秒才能查看"数字签名详细信息"面板(没有任何错误).证书的颁发者定义为:

CN = QV Schweiz ICA
OU = Issuing Certificate Authority
O = QuoVadis Trustlink Schweiz AG
C = CH

它仍然有效(消息说"这个数字签名没问题.").

注意:证书的根发行者是http://www.quovadisglobal.bm/,恰好在百慕大......



1> DSO..:

检查程序集(Authenticode)上的数字签名可能是造成延迟的原因.

摘自此MSDN文章:

Authenticode验证会增加启动时间.必须使用证书颁发机构(CA)验证Authenticode签名的程序集.此验证可能非常耗时,因为它可能需要多次连接到网络才能下载当前的证书吊销列表.它还确保在到受信任根的路径上有完整的有效证书链.加载程序集时,这可能会转换为几秒钟的延迟.


或者,正如我首先发布的那样,http://blogs.technet.com/markrussinovich/archive/2009/05/26/3244913.aspx
推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有