如何使用命令行的凭据将配置文件发布到 IIS?

Posted

技术标签:

【中文标题】如何使用命令行的凭据将配置文件发布到 IIS?【英文标题】:How to publish a profile to IIS with credentials from command line? 【发布时间】:2019-05-01 23:07:46 【问题描述】:

我有一个 .NET Core 2.2 Web 项目,我想通过命令行将它发布到不同服务器上的 IIS。

为此,我在我的项目 (Properties/PublishProfiles/myProfile.pubxml) 中创建了发布配置文件。对于用户名/密码,我输入了允许我发布到该服务器的凭据。我选择保存密码。密码已加密并保存到 myProfile.pubxml.user 我现在可以轻松地从 Visual Studio 发布,而无需输入用户名/密码。

大多数答案似乎都集中在运行以下命令的想法上:

dotnet publish -c Release /p:PublishProfile=Properties\PublishProfiles\myProfile.pubxml

问题是这个命令似乎忽略了用户名/密码,导致MSDEPLOY : error Code: ERROR_USER_NOT_ADMIN. The remote server returned an error : (401) Unauthorized.

有没有办法让dotnet publish 获取用户名/密码以便发布操作成功?

【问题讨论】:

USER_NOT_ADMIN 在尝试命令之前尝试以管理员身份运行 cmd 提示符。有可能涉及一些 rpc 魔法,并且可能需要本地管理员才能使用。瞎猜:) @Davesoft 这是我尝试的第一件事。不幸的是,我什至无法使用这些凭据打开命令提示符窗口 - 公司策略已锁定该用户。 @AngryHacker 你有没有找到解决这个问题的办法? @marcobirchler 不,最终使用 Jenkins/Octopus 进行部署。 【参考方案1】:

你不能直接运行 msdeploy 吗?我也试图让它与 dotnet publish 一起工作,但没有任何运气。最后我通过像这样运行 msdeploy 得到了解决方案:

msdeploy -verb:sync -setParam:'IIS Web Application Name'='my.website.com' -source:package="PathToPackage.zip" -dest:auto,computerName='https://my.website.com:8172/msdeploy.axd?site=my.website.com',username=YourUsername,password=YourPW,AuthType='Basic' -allowUntrusted=true

这绝对可以在不使用目标环境的管理员权限的情况下工作。

【讨论】:

以上是关于如何使用命令行的凭据将配置文件发布到 IIS?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 IIS 中关闭凭据缓存?

无法将带有凭据的 http 帖子发送到 iis 节点服务器

如何配置iis rewrite模块的url重写规则

IIS权限问题

IIS 基于所提供的凭据,您没有权限查看此目录或网页.

IIS.由于权限不足而无法读取配置文件的解决办法