“检查发行商的证书吊销状态”使 diffmerge.exe启动变慢

 (English Version)

我的一位客户报告说,当使用团队浏览器2008做文件比较的时候,如果计算机不连接因特网,则默认的比较工具(diffmerge.exe)启动比团队浏览器2005要慢很多。重现的步骤是:在团队浏览器的源代码控制视图选择一个文件->察看历史信息->双击察看一个 change set->在“源代码管理”栏,从列表中选择一个文件,右击,选择“比较-上一个版本”。

数据显示:

1. 使用团队浏览器2005,diffmerge.exe启动只要2~3秒钟。网络连接情况对工具启动时间没有影响。

2. 使用团队浏览器2008, 计算机连接因特网的情况下, diffmerge启动与2005一样快。但是如果无因特网连接,则工具启动需要13+秒钟。

Network Monitor 日志显示diffmerge.exe 9.0 启动时试图连接 crl.microsoft.com 这篇msdn blog post 对此做了很好的解释。简单来说,IE安全设置中的“检查发行商的证书吊销状态”选项一旦设置,.Net CLR会在启动任何托管代码之前连接crl.microsoft.com检查发行商证书。没有连外网的计算机此时就会遭遇一次连接超时。 这个问题的症状、原因和解决方法适用于包括diffmerge.exe在内的很多托管应用程序。

解决的方法:

1. 在IE中,将 工具->internet选项->高级->安全->“检查发行商的证书吊销状态”这一项取消  (默认是勾选的); 或者

2. 在本机的hosts文件中,将crl.microsoft.com指向127.0.0.1 (本机)。