ERROR_CERTIFICATE_VALIDATION_FAILED
连接到远程计算机(“XXXXXXXXX”)使用指定的进程(“Web Management Service”),但无法验证服务器的证书。如果您信任此服务器,请重新连接并允许不受信任的证书。
在发布设置中没有允许不受信任证书的选项。
当前工具尚不支持允许不受信任的证书选项,希望很快能够更新。但是您可以手动设置。
.pubxml
)<PropertyGroup>
元素内将 AllowUntrustedCertificate 设置为 True (<AllowUntrustedCertificate>True</AllowUntrustedCertificate>
) 或者如果不存在则添加 <UsePowerShell>False</UsePowerShell>
).在撰写时,生成的 PowerShell 脚本忽略了 AllowUntrustedCertificate 属性,这可能是一个 bug,因此需要将其设置为 False。
如果您更新 .ps1
文件中的模块版本,也可以解决 PowerShell 的问题。
另外,您还可以通过在本地“信任”服务器证书来解决此问题。
针对 .NET Core 1.0,您需要添加标签
<AllowUntrustedCertificate>True</AllowUntrustedCertificate>
在您的.pubxml文件中发布配置文件
对于我来说,解决方案在发布配置文件的xml中只需要4行。
<AllowUntrustedCertificate>True</AllowUntrustedCertificate>
<UseMsDeployExe>true</UseMsDeployExe>
<UserName>myuser</UserName>
<Password>mypass</Password>
UseMsDeployExe
会更改错误以忽略证书,但不会对用户进行身份验证,这就需要提供目标机器的用户名和密码。在PowerShell脚本中不需要做任何更改。
<UseMSDeployExe>True</UseMSDeployExe>
标签就行了,不需要其他三个标签。 - Josh Noe更新
在使用VS2015或VS2017 community部署.NET Core应用程序到远程IIS服务器时,请使用以下方法:
<UsePowerShell>True</UsePowerShell>
不是
<UsePowerShell>False</UsePowerShell>
发现部署过程已成功完成,但在将标签更改为true之前,未将任何文件复制到服务器。
希望这能帮助某些人。
对于在VS 2019中使用的dotnet 3.1.0,只需进入“编辑”配置文件 -> 验证连接 -> 接受证书即可完成。
另一个解决方案
我在远程IIS上创建了发布设置,并在Visual Studio 2017(15.2)中导入了它们。 之后,我更改了URL以指定站点名称,因为IIS用户只能访问特定站点(感谢this在SO上的答案)。 我通过UI输入了凭据,无需将密码存储在配置文件中。
我的配置文件如下:
<WebPublishMethod>MSDeploy</WebPublishMethod>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish>https://some.site.com:443/</SiteUrlToLaunchAfterPublish>
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<PublishFramework>netcoreapp1.1</PublishFramework>
<ProjectGuid>eecf975e-f2e6-440f-bfd6-a0a63c25e3c3</ProjectGuid>
<MSDeployServiceURL>https://url.toourserver.com:8172/msdeploy.axd?site=some.site.com</MSDeployServiceURL>
<DeployIisAppPath>some.site.com</DeployIisAppPath>
<RemoteSitePhysicalPath />
<SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
<MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
<EnableMSDeployBackup>True</EnableMSDeployBackup>
<UserName>IISUserName</UserName>
<AllowUntrustedCertificate>True</AllowUntrustedCertificate>
<_SavePWD>True</_SavePWD>
<AllowUntrustedCertificate>
是必需的,因为我的计算机不信任自签名证书。
使用此配置文件,根据 IIS 中的设置进行备份,更新站点,并在进程完成时在浏览器中打开站点 :-)
尽管这里的所有其他答案也使其工作,但我认为分享这种方式很好,因为它只涉及少量更改(AllowUntrustedCertificate),而且不会存储明文密码。
"#1. 从https://download.microsoft.com/download/0/F/D/0FD852A4-7EA1-4E2A-983A-0484AC19B92C/dotnet-sdk-2.0.0-win-x64.exe安装最新版本的.NET CLI。
#2. 在pubxml中设置此属性,它应该可以一致地工作:
true
(在Properties\PublishProfiles<profilename>.pubxml下)