如何限制webdeploy连接数,ERROR_EXCEEDED_MAX_SITE_CONNECTIONS

How to limit webdeploy connection number, ERROR_EXCEEDED_MAX_SITE_CONNECTIONS

我有一个包含 10-20 个 Web 项目的解决方案,我正在尝试使用 msbuild webdeploy 来部署它们。

msbuild "mysolution.sln" /p:DeployOnBuild=true /p:PublishProfile="Debug"

但是,我在部署过程中遇到了这个错误:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.targets(4295,5): msdeploy error ERROR_EXCEEDED_MAX_SITE_CONNECTIONS: Web deployment task failed. (The maximum number of connections for this site has been exceeded.

在日志中,在此错误之前,正在部署一些项目并更新文件。 msbuild 似乎试图同时部署尽可能多的项目,并且超过了最大连接数。

那么如何限制连接数,发布配置文件中有选项吗?

更新 - 解决方法

我在 Sitecore slack 频道的 viet.hoang 中找到了解决方法。它基本上增加了服务器上的最大连接数 and/or 重试发布配置文件中的尝试。

  1. 增加最大连接数:转到目标服务器并将以下内容添加到注册表中:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy] "MaxSiteConnections"=dword:00000010。然后重新启动 Web 管理服务。
  2. 增加重试次数:在发布配置文件中有一个选项"RetryAttemptsForDeployment",添加它并将值设置为20。

解决方法有效,部署中不再出现错误。但我仍然希望有人能够提供一些见解和适当的解决方案,不需要修改注册表并且可以快速抛出其他类型的错误而无需重试 20 次。

方法 1 - 通过 MSBuild 限制连接

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

msbuild.exe mysln.sln /maxcpucount:3  

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

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

方法 2 - 解除服务器上的限制

向服务器添加注册表值

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

"MaxSiteConnections" (DWORD Value) : 0

然后重启"Web Management Service".

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

参考:Nicolas_nguyen1在此Microsoft document

中的评论

我在 visual studio 2017 年通过网络部署主机时遇到了同样的问题。通过在线研究后,我找到了解决方案。请关注 link: https://youtu.be/nOonbx9FgJQ