Web Deploy 随机停止工作 - 已超出最大同步次数“10”

Web Deploy 随机停止工作 - 已超出最大同步次数“10”

我们拥有安装了 Web Deploy 3.6 的 Windows Server 2022 和 Windows Server 2019 服务器。一切都运行良好,我们能够完美部署,没有任何问题。我们能够从 Visual Studio 手动部署(发布站点)。我们还可以使用 Github 操作进行部署,例如:

dotnet 构建 WebsiteProjects\Website.Site\Website.Site.csproj /p:Configuration=Release /p:PublishProfile=WebsiteProjects\Website.Site\Properties\PublishProfiles\LIVE.pubxml /p:DeployOnBuild=True /p:Password="${{ secrets.PROD_PASS }}"

然而在过去的一个月里,我们根本无法再进行部署。

从 Visual Studio 部署时我们收到此错误:

C:\Program Files\dotnet\sdk\8.0.100\Sdks\Microsoft.NET.Sdk.Publish\targets\PublishTargets\Microsoft.NET.Sdk.Publish.MSDeploy.targets(140,5): 错误:Web 部署任务失败。(同步已停止,因为同步次数已超过最大次数“10”,尽管无法应用所有更改。如果对目标进行了外部更改,则可能会发生这种情况。)发布部署失败。

如果我们使用 GitHub 操作,我们会收到此错误:

MSDEPLOY:错误:同步已停止,因为同步次数已超过最大次数“10”,尽管无法应用所有更改。如果对目标进行了外部更改,则可能会发生这种情况。[C:\actions-runner_work\Site\Site\WebServiceProjects\WebService.SiteApi\WebService.SiteApi.csproj]

多年来,这些服务器上没有任何变化,除了 Windows 更新和添加/删除站点。发布配置文件也没有改变。

禁用 Windows Defender 不起作用。重新启动 Web 部署代理也不起作用。重新启动服务器也不起作用。重新启动 IIS 或在部署时禁用站点也不起作用。

有时如果我停止网站并删除 inetpub 文件夹中的所有文件,部署将会有效 - 这似乎是使 Web 部署有效的唯一方法,但它并不一致。

请注意,我们尝试使用 .NET 7 和 .NET 8 SDK 进行此操作 - 问题相同。我已记录我最初以为这是他们某个更新的问题,所以通过 Visual Studio 尝试解决了这个问题。我在事件查看器中也没有看到任何有趣的内容。

真的很困惑,因为我们现在无法运行 GitHub 操作进行部署,甚至无法从 Visual Studio 手动部署到服务器。有什么建议可以解决或诊断正在发生的事情吗?

在此处输入图片描述

发布配置文件示例:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>MSDeploy</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish>https://...</SiteUrlToLaunchAfterPublish>
    <LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
    <ExcludeApp_Data>false</ExcludeApp_Data>
    <TargetFramework>net7.0</TargetFramework>
    <ProjectGuid>2ca81a89-d8b9-4f72-ba22-dd26757ef8d6</ProjectGuid>
    <SelfContained>false</SelfContained>
    <_IsPortable>true</_IsPortable>
    <MSDeployServiceURL>...</MSDeployServiceURL>
    <DeployIisAppPath>...</DeployIisAppPath>
    <RemoteSitePhysicalPath />
    <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
    <EnableMSDeployBackup>true</EnableMSDeployBackup>
    <UserName>Administrator</UserName>
    <_SavePWD>true</_SavePWD>
    <SkipExtraFilesOnServer>false</SkipExtraFilesOnServer>
    <EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>
    <MSDeployUseChecksum>true</MSDeployUseChecksum>
    <AllowUntrustedCertificate>True</AllowUntrustedCertificate>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
  </PropertyGroup>
</Project>

答案1

将 MSDeployUseChecksum 更改为 false 似乎可以解决这个问题:

 <MSDeployUseChecksum>false</MSDeployUseChecksum>

但不知道为什么。

相关内容