使用TeamCity进行Web部署失败,错误为ERROR_EXCEEDED_MAX_SITE_CONNECTIONS。

18

我使用webdeploy方法通过TeamCity部署网站:

web.csproj /P:Configuration=%env.Configuraton% /P:DeployOnBuild=True /P:DeployTarget=MSDeployPublish /P:MsDeployServiceUrl=%env.DeployServiceUrl% /P:AllowUntrustedCertificate=True /P:MSDeployPublishMethod=WMSvc /P:CreatePackageOnPublish=True /P:UserName=%env.DeployUserName% /P:Password=%env.DeployPassword%

我不断收到的错误信息:

[MSDeployPublish] VSMSDeploy (35s) [VSMSDeploy] C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.5\Web\Microsoft.Web.Publishing.targets(4196, 5): error ERROR_EXCEEDED_MAX_SITE_CONNECTIONS: 网络部署任务失败。(此站点的最大连接数已超过。详细信息请参阅: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_EXCEEDED_MAX_SITE_CONNECTIONS。)

在Teamcity代理上安装了Visual Studio 2010 Express,.net框架版本为4.0。

只是要添加我的2分钱:我重新尝试了一下,它工作了。有时宇宙射线会干扰。 - Sebazzz
5个回答

25

我通过在服务中重新启动Web管理服务来解决了这个问题。


1
这个解决方案对我在出现错误“由于异常‘已经有一个构建正在进行中。请稍后再试’,导致调用构建失败”时也起作用了。 - Jon Schneider
1
在一台法国服务器上,寻找“Service de gestion Web”(不知道为什么他们要翻译这种东西,使用现有的解决方案更加复杂)。 - youen
这不是一个修复/解决方案。这只是一个权宜之计。如果我们重启服务器,它也可以工作,但那也不是一个修复/解决方案。 - John Rocha
1
当我尝试这个时,Web管理服务挂起并且无法关闭。 - Mike
Web管理服务挂起,我杀掉了进程,它自动重启后问题解决了。 - Ian Warburton

2
我也遇到了一种方法,可以允许无限数量的连接:
1.) 添加以下注册表键:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\3]
"MaxSiteConnections"=dword:00000000

2.) 重新启动 Web 管理服务

参考: Nicolas_nguyen1 在Microsoft 文档中的评论

来源: 如何限制 WebDeploy 连接数,ERROR_EXCEEDED_MAX_SITE_CONNECTIONS

更新

我已经亲自测试过,似乎 Web Deploy 将此值视为允许 "0" 个连接,导致每次都出现此错误。因此,我将其设置为 0x7FFFFFFF(32位整数的最大值)。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\3]
"MaxSiteConnections"=dword:7FFFFFFF

1
我在两端进行了问题调查:托管Web服务器和构建机器(从Web安装程序安装的Visual Studio 2010 Express SP1),我从其中一个机器开始部署。重启TeamCity服务器和代理(问题在2个代理上复制)没有帮助。我在本地机器上安装了TeamCity代理并成功部署。然后我比较了成功和失败的构建日志。有趣的部分是错误的来源:

C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.5 \ Web \ Microsoft.Web.Publishing.targets

在我的本地机器上(使用SP1的Visual Studio Ultimate 2010),我只有

MSBuild\Microsoft\VisualStudio**v10**\Web\Microsoft.Web.Publishing.targets

我的快速解决方案是在构建代理上使用该方法进行部署测试。我已经将以下内容替换为:

C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v10\Web\

这样就解决了问题。我不知道为什么,但以前在构建代理上部署工作正常。


0

今天我在设置新的TeamCity构建时遇到了同样的问题。构建使用Web Deploy将两个MVC4应用程序发布到本地网络上的测试服务器上,每晚定时执行。

在我的情况下,错误是由于在TeamCity的构建计划触发器中勾选了"在所有启用和兼容代理上触发构建"选项引起的。我们有四个构建代理,并且勾选了该选项会同时启动四个构建。其中两个构建成功,另外两个构建出现了ERROR_EXCEEDED_MAX_SITE_CONNECTIONS错误。


0

我也遇到了这个错误,我研究了两种解决方法。这是我的原始问题,但我认为这个问题比我的更容易搜索,所以我会在这里重新发布我的发现来帮助其他人:

https://stackoverflow.com/a/49140311/4228027

方法1 - 通过MSBuild限制连接

有一种方法可以限制MSBuild可以使用的线程数量。

msbuild.exe mysln.sln /maxcpucount:3  

"maxcpucount" 限制了 MSBuild 的线程数,从而限制了同时可以发布的项目数量。如果未定义,则 MSBuild 实际上会使用计算机上处理器的数量。

参考资料:https://msdn.microsoft.com/en-us/library/bb651793.aspx

方法二 - 解除服务器限制

在服务器上添加注册表值

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\3]

"MaxSiteConnections" (DWORD Value) : 0

然后重新启动 "Web Management Service"。

当您将注册表值设置为 0 时,它表示无限连接。

参考资料:Nicolas_nguyen1 在 Microsoft 文档 中的评论


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接