ASP.NET Core使用Web Deploy发布命令时连接目标服务器失败的问题排查
问题原因分析
你遇到的这个MSDEPLOY连接错误,核心原因完全在你的development.pubxml配置里:
你的配置里写了 <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>,这个参数明确告诉MSDeploy要使用**IIS Web Management Service(WMSVC)**来部署——就是那个默认监听8172端口的服务,但你目标服务器根本没装它,自然连不上。
而你提到的经典ASP.NET项目能成功部署,是因为它们的发布配置用的是Web Deployment Agent Service对应的发布方法:RemoteAgent,这也是你现在目标服务器已经安装并可用的服务。
解决方案
只需要修改development.pubxml里的发布方法配置,步骤如下:
- 打开你的
development.pubxml文件,找到<MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>这一行 - 将其修改为
<MSDeployPublishMethod>RemoteAgent</MSDeployPublishMethod> - 确保
MSDeployServiceURL的值就是你的目标机器名(和经典ASP.NET项目里用的一致即可,不需要加:8172端口)
修改后的完整PropertyGroup配置应该是这样:
<PropertyGroup> <WebPublishMethod>MSDeploy</WebPublishMethod> <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> <LastUsedPlatform>Any CPU</LastUsedPlatform> <SiteUrlToLaunchAfterPublish /> <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish> <ExcludeApp_Data>False</ExcludeApp_Data> <TargetFramework>netcoreapp2.0</TargetFramework> <ProjectGuid>ec75aa7b-c5ca-4d08-a80e-0d70c604f85c</ProjectGuid> <MSDeployServiceURL>target machine name</MSDeployServiceURL> <DeployIisAppPath>MyIISApplicationPath</DeployIisAppPath> <RemoteSitePhysicalPath /> <SkipExtraFilesOnServer>False</SkipExtraFilesOnServer> <!-- 关键修改:把WMSVC改成RemoteAgent --> <MSDeployPublishMethod>RemoteAgent</MSDeployPublishMethod> <EnableMSDeployBackup>True</EnableMSDeployBackup> <UserName /> <_SavePWD>False</_SavePWD> <AuthType>NTLM</AuthType> </PropertyGroup>
验证步骤
修改完成后,重新在Jenkins上运行你的dotnet publish命令:
dotnet publish D:\Jenkins\MyProject\workspace\MyApplication\Src\Api\Api.csproj /p:PublishProfile=development.pubxml
因为你已经确认构建服务器和目标服务器的网络连接正常(经典ASP.NET项目能部署),所以修改这个配置后,MSDeploy就会自动使用目标服务器上的Web Deployment Agent Service进行部署,不会再尝试连接8172端口的WMSVC服务了。
内容的提问来源于stack exchange,提问作者LP13
相关产品推荐
相关产品推荐

