MSDeploy 到 Azure Web App 返回 401

问题描述 投票:0回答:1

我有一个 Azure Web 应用程序,并将发布配置文件添加到 Visual Studio 中。当我运行 Web 部署时,它可以工作。我想做的就是进行完全相同的部署,但是是从命令行进行的。这是我正在使用的命令:

msdeploy.exe
    -verb:sync
    -source:dirpath="path\to\files"
    -dest:dirpath="c:\home\site\wwwroot",ComputerName="https://myappservice.scm.azurewebsites.net",UserName="user",Password="pass",AuthType="Basic"

这给了我一个带有错误消息的 401

ERROR_USER_NOT_ADMIN

我已经尝试了应用程序范围凭据,这些凭据与 Visual Studio 用于执行成功部署的发布配置文件中定义的凭据相同,因此我不明白为什么当我在以下位置使用它们时它们不起作用命令行。

我还尝试了用户范围凭据,当我从命令行执行 FTP 部署时它可以工作,并且在 Azure 中它说这些可以用于 Web 部署,所以我再次不明白为什么这些不是'已接受。

我还尝试过我的Azure 管理员登录,这确实让我感到困惑,因为如果我注销 Azure,然后转到与我的命令中相同的 SCM URL,系统会提示我登录。我提供了这些凭据,它让我进入。这绝对是一个管理员帐户,所以我再次不明白为什么

msdeploy
认为它们是非管理员凭据。

另外,值得注意的是,以上仅适用于

Developer PowerShell
窗口。如果我在项目范围之外打开
cmd
,那么我只会得到
ERROR_DESTINATION_NOT_REACHABLE

我见过的大多数其他问题都是服务器端问题(不是安装依赖项等),但由于 Visual Studio 能够运行部署,我确信问题不在服务器端。谁能告诉我我在做什么蠢事!

azure deployment webdeploy
1个回答
0
投票

如果我在项目范围之外打开

cmd
,那么我只会得到
ERROR_DESTINATION_NOT_REACHABLE

ERROR_DESTINATION_NOT_REACHABLE
错误表示连接到目标 URL 时出现问题,可能是由于 SSL 证书验证或网络问题造成的。在命令中添加
-allowUntrusted
会告诉
msdeploy
忽略 SSL 证书警告。

  • Web 部署需要在 Azure 发布配置文件部署凭据中配置的用户,而 FTP 凭据的处理方式不同。

-allowUntrusted
作为附加参数包含在
msdeploy
命令中

此标志允许

msdeploy
在不验证目标 SSL 证书的情况下继续进行。

使用从 Azure Web 应用程序下载的发布配置文件中的凭据

转到 Azure 门户中的 Web 应用程序,您可以找到下载公共配置文件,单击它。

enter image description here

打开下载的文件,从发布配置文件 XML 中提取

UserName
Password

enter image description here

用途:

msdeploy.exe -verb:sync -source:dirPath="path\to\files" -dest:contentPath="site\wwwroot",ComputerName="https://myappservice.scm.azurewebsites.net:443/msdeploy.axd",UserName="$MyApp",Password="password",AuthType="Basic" -verbose
  • 导航到访问控制 (IAM) > 角色分配。为 $MyApp
     添加 
    Contributor
  • 角色

测试凭证:

enter image description here

cmd 行中的

部署状态

Verifying the destination...
Using URL: https://dotnetwebapp01-dfghbggjh4dra9gs.scm.azurewebsites.net/msdeploy.axd
Verifying source path...
Source: C:\path\to\your\app
Destination: site\wwwroot on https://dotnetwebapp01-dfghbggjh4dra9gs.scm.azurewebsites.net/msdeploy.axd
Using authentication type: Basic
Connecting to destination server...
Establishing connection to server...
Authentication successful.
Preparing for file synchronization...

Synchronizing the following directories:
Source: C:\path\to\your\app
Destination: site\wwwroot

File synchronization successful:
Copied 200 files (10MB)
Total time: 2.34 seconds

Operation completed successfully.
Deployment finished: https://dotnetwebapp01-dfghbggjh4dra9gs.scm.azurewebsites.net/msdeploy.axd
© www.soinside.com 2019 - 2024. All rights reserved.