我有一个 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 能够运行部署,我确信问题不在服务器端。谁能告诉我我在做什么蠢事!
如果我在项目范围之外打开
,那么我只会得到cmd
。ERROR_DESTINATION_NOT_REACHABLE
ERROR_DESTINATION_NOT_REACHABLE
错误表示连接到目标 URL 时出现问题,可能是由于 SSL 证书验证或网络问题造成的。在命令中添加 -allowUntrusted
会告诉 msdeploy
忽略 SSL 证书警告。
将
-allowUntrusted
作为附加参数包含在 msdeploy
命令中
此标志允许
msdeploy
在不验证目标 SSL 证书的情况下继续进行。
使用从 Azure Web 应用程序下载的发布配置文件中的凭据
转到 Azure 门户中的 Web 应用程序,您可以找到下载公共配置文件,单击它。
打开下载的文件,从发布配置文件 XML 中提取
UserName
和 Password
。
用途:
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
$MyApp
添加Contributor
测试凭证:
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