我们拥有安装了 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>
但不知道为什么。