“检查发行商的证书吊销状态”使 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 (本机)。

1

Check for publisher's certificate revocation slowing down diffmerge.exe

(Chinese Version)  A customer of mine reported that they experienced remarkable performance drawback in Team Explorer 2008 compared to Team Explorer 2005, when using the Team Explorer 2008 default compare feature in a closed network(with no access to the internet).  This can be easily reproduced: select a file in the source control view->view history->choose a…

1

关于 团队浏览器->文档 节点 排错的思路

(English Version)    用户可以通过 团队浏览器(以下简称TE)->TFS服务器名->团队项目名->文档 节点来读取和操作项目文档。这篇文章讨论1)项目文档树形结构是如何在TE中显示出来的,2)几种观察到的错误情形,以及 3)出现错误时如何排查的思路。   当用户登录到TE,或在团队项目节点上进行“刷新”操作时,TE做如下动作: 1.  TE调用一个WSS web service  http://<WSSServer:port>/sites/<project name>/_vti_bin/Lists.asmx, web method GetListItems。参数定义令WSS递归读取团队项目文档库根路径下所有文件/文件夹记录。调用方法使用的身份是当前使用TE的用户,而不是 TFS 服务用户。 2.  WSS web service 返回的响应是一个XML字符串,主要部分就是一个数据集,每条记录对应文档库中的一个文件或文件夹。记录包括一些描述该文件/文件夹的WSS属性。 3.  TE取XML数据集每条记录的ows_FileRef属性(文件/文件夹的路径)建立树形结构。对每个”\”结尾的记录,添加一个文件夹节点;对每个非”\”结尾的数据,按照路径添加到相应文件夹节点下。如路径为“\folderA\folderB\fileC.doc” 的项目,就添加到文件夹folderA 下的文件夹folderB下,命名为fileC.doc。这里的实现很直接。   现在来看几种出问题的情形。 l  “文档”节点标了个红叉,下面没有数据. 因为从WSS web service取数据的请求是使用当前用户身份发出的,因此如果当前用户没有访问该WSS文档库的权限,就没有数据返回。 这是TFS新用户经常提出的问题。 TFS中的项目团队和权限定义仅覆盖版本控制和任务项管理。为了让团队成员能够访问团队项目站点及文档库,项目经理需要在WSS站点中额外定义用户的访问权限。同样的,为了让项目成员可以访问到各种报表,项目经理还需要在reporting service站点定义相应权限。    另一个可能的原因是目标WSS服务当前(对本机)不可用。这两种情形使用web浏览器访问一下WSS站点就可以验证。 l  文档树出现错误。这种情况很少见。有一次用户报告说TE中的文档树是错误的。有一个文件夹丢失了,文件夹中的文档都被错误地放置在文档库根目录下面。检查WSS web method返回的数据,我们发现记录集中所有的文件\文件夹都在,唯独缺少丢失的文件夹对应的记录。这样TE在建立文档树的时候就没有生成该文件夹节点。文件夹下的文档无处可放,就直接放在了根路径下。最终原因是WSS数据库中该文件夹对应的记录不知何故丢失了。补足这一记录,问题就解决了。 顺便说一句,最初看起来确实像是TE出了问题。WSS数据库记录丢失的情况下,WSS自己的站点似乎知道如何处理。WSS站点中相应的文件和文件夹都显示在正确的位置。 l  一些文件/文件夹从文档树中丢失了. 您的WSS文档库是不是存放了超过一万条记录呢?TE向WSS请求数据时,参数“RowLimit” 设定为 10,000。因此文档树最多显示一万条记录(包括文件和文件夹)。TE2005和2008中这个数量无法通过配置进行修改,将来的版本或许会提高限额。如果您的文档库超过一万条记录,那么不要从TE看文档了,还是用WSS站点吧。   当到TE->文档 节点出现错误的时候, 建议按照如下顺序排错:…

5

Troubleshooting Team Explorer -&gt;Documents node problems

(Chinese version of this post)  One can read & operate the documents from the Team Explorer->TFS Server Name->Team Project Name->documents node. In this post I briefly talk about how the document hierarchy is displayed in the tree view, some observed failing senarioes, and ideas of troubleshooting the documents node.   When one logon to Team…

2