当我传入用户凭据时,我的 MSDeploy 部署与 TeamCity 完美配合。命令行参数(对某些值使用环境变量)是:
MSBuild.exe Web.csproj
/P:Configuration=%env.Configuration%
/P:DeployOnBuild=True
/P:DeployTarget=MSDeployPublish
/P:MsDeployServiceUrl= https://%env.TargetServer%/MsDeploy.axd
/P:AllowUntrustedCertificate =True
/P:MSDeployPublishMethod=WMsvc
/P:CreatePackageOnPublish=True
/P:UserName=%env.AdminUser%
/P:Password=%env.AdminPassword%
工作得很好。但现在我想使用集成身份验证。我尝试按照 Troy 的建议从Can MSBuild deploy using integration authentication or only basic? 但它并没有起到作用。我尝试了传入空白用户名并指定的各种组合
/p:AuthType=NTLM
我得到的最接近的是通过指定 /p:AuthType=NTLM 并传入一个空白用户名。但这仍然会导致此错误:
使用 Web 管理服务连接到目标计算机(“[我的目标服务器名称]”),但无法授权。确保您使用正确的用户名和密码,您要连接的站点存在,并且凭据代表有权访问该站点的用户。远程服务器返回错误:(401) Unauthorized
我在本地和远程服务器上都运行了 Web 管理服务。我将两个实例都更改为以我知道对站点具有适当访问权限的用户身份运行 - 如果我手动传递凭据,则该用户可以工作。
我还尝试在目标站点上手动授予该用户 IIS 管理器权限(尽管不确定为什么需要这样做,因为用户可以在手动传递其凭据时发布到该站点)。
我注意到的一件事是,在 WMsvc 日志中,它没有为使用 NTLM 身份验证所做的尝试记录任何用户名。
知道这里发生了什么。我真的不想在我的 TeamCity 配置中存储用户凭据。
谢谢。