Visual Studio 2022发布Azure网站遇ERROR_USER_UNAUTHORIZED问题排查
问题1:无法登录远程计算机时,验证凭据的部署权限
- Azure Portal FTP验证:
进入目标App Service的「部署中心」→「FTP/FTPS」标签,确认使用的是「应用凭据」还是「用户凭据」,用该凭据连接FTP端点(格式:ftp://<app-name>.ftp.azurewebsites.net)。若能成功连接并访问/site/wwwroot目录,说明凭据具备基础部署权限。 - Kudu控制台权限校验:
在App Service的「高级工具」中打开Kudu,用部署凭据登录后,进入「Debug console」→「CMD」,执行命令:
查看输出结果,确认凭据对应的用户(应用凭据对应icacls "D:\home\site\wwwroot"$<app-name>,用户凭据对应订阅账号)拥有(OI)(CI)(RW)读写权限。 - IAM角色检查:
进入App Service的「访问控制(IAM)」页面,确认凭据所属的用户/服务主体拥有「网站参与者」或更高权限的角色——部署操作需要这类角色授权资源访问。
问题2:禁用站点Basic Authentication是否会导致MSDeploy授权失败
会。MSDeploy(Web Deploy)部署到Azure App Service时,默认依赖Basic认证传递部署凭据。如果在App Service的「配置」→「常规设置」中禁用了Basic Authentication,MSDeploy的认证请求会直接被拒绝,触发ERROR_USER_UNAUTHORIZED错误。
调试方法
- 启用Visual Studio详细发布日志:
在发布配置的「设置」→「更多选项」中勾选「启用详细日志记录」,重新发布后查看输出窗口的完整错误信息,可定位具体认证失败环节。 - 手动执行MSDeploy命令行测试:
构造命令直接测试部署流程,替换占位符后执行:
命令返回的错误信息会比Visual Studio更直接,便于定位问题。msdeploy.exe -verb:sync -source:iisApp="C:\本地站点路径" -dest:iisApp="https://<app-name>.scm.azurewebsites.net:443/msdeploy.axd?site=<app-name>",username="<部署用户名>",password="<部署密码>",authtype="Basic" - 检查App Service认证配置:
进入App Service的「配置」→「常规设置」,确认「Basic Authentication」处于启用状态;若启用了其他认证方式(如Azure AD),需确保部署流程仍使用Basic认证传递凭据。 - 重置部署凭据:
若以上步骤均无问题,可能是凭据过期或损坏。在App Service的「部署中心」→「FTP凭据」中点击「重置」,生成新凭据后更新pubxml配置文件再尝试发布。
附pubxml配置检查要点
确保你的pubxml中关键配置正确:
<PropertyGroup> <WebPublishMethod>MSDeploy</WebPublishMethod> <MSDeployServiceURL>https://<app-name>.scm.azurewebsites.net:443/msdeploy.axd?site=<app-name></MSDeployServiceURL> <DeployIisAppPath><app-name></DeployIisAppPath> <UserName>$<app-name></UserName> <!-- 应用凭据格式,用户凭据则填订阅账号 --> <Password>你的部署密码</Password> <AuthType>Basic</AuthType> </PropertyGroup>
内容的提问来源于stack exchange,提问作者chanc
相关产品推荐
相关产品推荐

