gpt4 book ai didi

msbuild - MSBuild 可以使用集成身份验证还是仅使用基本身份验证进行部署?

转载 作者:行者123 更新时间:2023-12-03 07:51:14 27 4
gpt4 key购买 nike

我正在将一个 Web 应用程序包从 MSBuild 命令行部署到 IIS6 上的 MSDepSvc,它使用基本身份验证与以下命令一起正常工作:

MSBuild.exe Web.csproj
/p:Configuration=Debug
/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish
/p:MsDeployServiceUrl=http://[server name]/MsDeployAgentService
/p:DeployIisAppPath=DeploymentTestProject
/p:MSDeployPublishMethod=RemoteAgent
/p:CreatePackageOnPublish=True
/p:username=***
/p:password=***

但是,我真正想做的是删除用户名和密码参数,并退回到当前用户身份下的集成身份验证。此命令将进入构建服务器,我不希望在目标环境(MsDepSvc 所需)上具有管理员权限的帐户的纯文本凭据可见。我找不到任何有关如何执行此操作的文档,并且在我尝试发布时丢弃凭据返回 401 未经授权。

特别令人沮丧的是,我可以愉快地使用集成身份验证在包中运行部署命令(只是不包含凭据),但我似乎无法从 MSBuild 命令行运行它。我试图在不编辑构建文件的情况下将包和部署过程封装到单个命令中,这是目前唯一的方法。

有什么想法吗?

编辑
在与 Sayed 进行了一些讨论并更深入地查看命令行输出后,在执行上面的 MSBuild 命令(没有用户名和密码参数)后,正在调用以下 MSDeploy 命令:
msdeploy.exe
-source:package='[project path]\Web\obj\Debug\Package\Web.zip'
-dest:auto,ComputerName='http://[server]/MsDeployAgentService',UserName='***',IncludeAcls='False',AuthType='NTLM'
-verb:sync
-disableLink:AppPoolExtension
-disableLink:ContentExtension
-disableLink:CertificateExtension
-retryAttempts=2

您可以看到正在设置 UserName 属性,该值是当前登录用户的用户名。如果我将其取出并直接运行上述命令,则部署会顺利进行。

那么在此基础上,为什么原来的 MSBuild 命令在调用 MSDeploy 时会插入一个 UserName 属性呢?这似乎是现在唯一的障碍。

最佳答案

而答案是……

按照我上面关于当前身份的用户名持续到 MSDeploy 命令的编辑之后,即使没有在原始 MSBuild 调用中传递,我尝试重建参数以传递一个空用户名,如下所示:

MSBuild.exe Web.csproj
/p:Configuration=Debug
/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish
/p:MsDeployServiceUrl=http://[server name]/MsDeployAgentService
/p:DeployIisAppPath=DeploymentTestProject
/p:MSDeployPublishMethod=RemoteAgent
/p:CreatePackageOnPublish=True
/p:username=

然后生成以下 MSDeploy 命令:
msdeploy.exe 
-source:package='[project path]\obj\Debug\Package\Web.zip'
-dest:auto,ComputerName='http://[server name]/MsDeployAgentService',IncludeAcls='False',AuthType='NTLM'
-verb:sync
-disableLink:AppPoolExtension
-disableLink:ContentExtension
-disableLink:CertificateExtension
-retryAttempts=2

此调用不再包含 UserName 属性。简而言之,如果您不向 MSBuild 调用添加用户名参数,它无论如何都会插入当前身份并遵循基本身份验证,这将失败,因为没有密码。如果您包含 username 参数但没有给它一个值,则它根本不包含在 MSDeploy 命令中。

关于msbuild - MSBuild 可以使用集成身份验证还是仅使用基本身份验证进行部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4210379/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com