如何使用命令行的凭据将配置文件发布到 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?的主要内容,如果未能解决你的问题,请参考以下文章