包含“0”的变更集的TFS签入超时;“较大的”;二进制文件

包含“0”的变更集的TFS签入超时;“较大的”;二进制文件,tfs,tfsintegrationplatform,Tfs,Tfsintegrationplatform,我正在执行从TFS.visualstudio到内部部署2012服务器的TFS集成迁移。我遇到了一个特定变更集的问题,该变更集包含多个超过1MB的二进制文件,其中一些是15-16MB。[我正在与本地TFS进行远程(WAN)工作] 从TFSI日志中,我看到:Microsoft.TeamFoundation.VersionControl.Client.VersionControlException:C:\TfsIPData\42\*****\Foo.msi:请求被中止:请求被取消。 --->Syste

我正在执行从TFS.visualstudio到内部部署2012服务器的TFS集成迁移。我遇到了一个特定变更集的问题,该变更集包含多个超过1MB的二进制文件,其中一些是15-16MB。[我正在与本地TFS进行远程(WAN)工作]

从TFSI日志中,我看到:
Microsoft.TeamFoundation.VersionControl.Client.VersionControlException:C:\TfsIPData\42\*****\Foo.msi:请求被中止:请求被取消。
--->System.Net.WebException:请求已中止:请求已取消。
--->System.IO.IOException:在写入所有字节之前无法关闭流。

在谷歌上搜索时,我遇到了其他类似的问题,不一定与TFS集成有关。我相信,如果我只是签入一个像normal一样满足相同标准的变更集,同样的问题也会出现。据我所知,上传文件(签入)时,默认块大小为16MB,超时时间为5分钟

在这个网站上,我的互联网上传速度只有1Mbit/s。(虽然我认为有足够的上传带宽可以缓解这个问题,但它并不能解决这个问题)

使用TCPView,我在上传过程中观察了从客户端到TFS服务器的连接。我看到的是9个同时连接。因此,我的带宽在9个文件上传中共享。果不其然,大约5分钟后,在上传字节计数完成之前,连接就失效了


我的问题是,我如何配置我的TFS客户机以利用更少的并发连接和/或更小的块大小和/或更多的超时?这是否可以在全局范围内进行,以涵盖VS、TF.EXE和TFS集成?

在Microsoft.TeamFoundation.VersionControl.Client.dll文件上载程序中花了一些时间与IL DASM进行交互后,我在构造函数中发现了字符串
VersionControl.UploadChunkSize
。它看起来像是用来覆盖默认的块大小(DefaultUploadChunkSize=0x01000000)

因此,我将其添加到了TfsMigrationShell.exe.config

<appSettings>
    <add key="VersionControl.UploadChunkSize" value="2097152" /> 
</appSettings>

再次运行VC迁移——这次它通过了问题变更集

基本上,TFS客户端DLL将尝试同时上载多个文件(在我的示例中为9)。您的上传带宽将在文件之间分配,如果任何单个文件传输无法在5分钟内完成16MB,操作将失败。因此,您可以看到,使用适度的上载带宽,包含多个二进制文件的变更集可能会超时。您唯一可以控制的是每个5分钟超时块的字节数。默认值为16MB,但您可以减少它。我把我的减少到2MB


我想可以对devenv.exe.config执行此操作,以在执行开发人员代码签入时处理相同的问题。希望这些信息能帮助其他人摆脱困境,并为他们节省一些时间。

感谢您找到这些信息。似乎有错误的字符串。您好@LatencyMachine,您是否100%确定此错误与工具配置的配置设置有关(我们可以互换地说工具配置和devenv.exe.config)。因为我相信这个错误可能是因为目标TFS对通过网络签入文件有一些限制。你觉得呢?只是问问。。。我们已经设置了值=“102400”(即:100kb)。它仍然是失败的工具。我们正在迁移15个文件(文件大小从1MB到12MB不等)。错误是:操作已超时。同样在日志中,我们可以看到->我在MSDN论坛上的帖子“签入失败原因不明”:我需要你们的一些反馈。谢谢。我们还注意到,在通过防火墙网络在两台TFS服务器之间同步大型文件(>5MB)时,会出现此错误。如果我们在2台TFS服务器之间进行本地同步,则不会出现错误,也无需更改UploadChunkSize!你知道这可能发生的原因吗?