使用MSDeploy命令行部署Azure Web App时返回401(ERROR_USER_NOT_ADMIN)错误
解决Azure Web App命令行Web Deploy 401及连接问题
核心参数修正
你的命令存在两个关键参数错误,这是导致401和连接失败的主要原因:
1. 补全ComputerName的完整Web Deploy端点
Azure的Web Deploy需要指向SCM站点的msdeploy.axd专属端点,而非单纯的SCM域名。Visual Studio会自动填充这个路径,但命令行必须显式指定:
msdeploy.exe -verb:sync -source:dirpath="path\to\files" -dest:dirpath="site\wwwroot",ComputerName="https://myappservice.scm.azurewebsites.net/msdeploy.axd?site=myappservice",UserName="$myappservice",Password="your-publish-password",AuthType="Basic"
注意:
site=后面的值要和你的Web App名称完全一致;UserName需使用发布配置文件中带$前缀的完整用户名(比如$myappservice),不能只输入部分字符串。
2. 修正目标路径格式
Azure SCM环境的路径无需Windows盘符,直接使用site\wwwroot即可,不需要写c:\home\site\wwwroot。
终端环境问题解决
普通CMD中出现ERROR_DESTINATION_NOT_REACHABLE是因为环境变量未包含Web Deploy的执行路径,解决方式二选一:
- 直接使用msdeploy的完整路径调用,比如:
"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" [其余参数] - 将
C:\Program Files\IIS\Microsoft Web Deploy V3添加到系统PATH环境变量,重启CMD后即可直接调用msdeploy.exe。
凭据验证要点
- 确保使用应用范围的发布凭据,即Visual Studio中成功部署的发布配置文件里的用户名和密码,用户名必须保留
$前缀。 - 复制密码时避免引入多余的空格或换行,建议直接从发布配置文件XML的
<userPWD>节点中复制原始值。
内容的提问来源于stack exchange,提问作者Oliver Nicholls
相关产品推荐
相关产品推荐

