Web Deploy 发布网站错误 检查授权和委派设置
Web Deploy
发布ASP.NET
网站给我们提供方便,配置好后可以很方便地发布网站到IIS服务器
。
自安装Web Deploy
一年以来,一直都用得好好地。
直到最近,Gitlab-CI
自动发布出了问题,提示:
"C:\Tools\GitLab-Runner\builds\d1af4d14\0\WP\Hallhuber\src\WP.Web.Mvc\1621.WP.Web.Mvc.csproj" (default target) (1) ->
(MSDeployPublish target) ->
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.targets(4295,5): msdeploy error ERROR_USER_UNAUTHORIZED: Web deployment task failed. (Connected to the remote computer ("192.168.70.62") using the Web Management Service, but could not authorize. Make sure that you are using the correct user name and password, that the site you are connecting to exists, and that the credentials represent a user who has permissions to access the site. Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_UNAUTHORIZED.) [C:\Tools\GitLab-Runner\builds\d1af4d14\0\WP\Hallhuber\src\WP.Web.Mvc\1621.WP.Web.Mvc.csproj]
17 Warning(s)
1 Error(s)
Time Elapsed 00:00:43.96
Publish completed.
ERROR: Job failed: exit status 1
如图:
我在 Visual Studio
上手动发布该Web项目
,点发布时,弹出了"请输入密码以连接到 Web Deploy 客户端"
提示框。
我输入密码后,可以成功发布。
我感觉有点奇怪,为什么 Visual Studio
可以正常发布,而 Gitlab-CI
却发布失败,而且 Visual Studio
竟然要输入密码才能发布,我明明把密码写进pubxml
发布配置文件里了。
此时我没有多想,我尝试以bat发布命令脚本
形式发布Web项目
,竟然发布失败了,和 Gitlab-CI
一样地提示"ERROR_USER_UNAUTHORIZED"
。
于是,上Bing国际版
加上site:stackoverflow.com
指令搜索·stackoverflow网站·上的解决方案:
有人说是要在发布命令脚本中多加两个参数/p:UserName=YourName /p:Password=YourPassword
,这个我试过,不行。
有人说要使用Windows本地非管理员账户而不是IIS虚拟账户来发布,我创建了一个本地账户,管理员身份和非管理员身份都试过,也不行。
有人说是 Web Deploy
没有完整安装所致:
这里我很纳闷,因为我之前第一次安装 Web Deploy
就是完整安装
模式,但安装完后,"Web Deployment Agent Service"
服务起不来。
当时没有当一回事,有一次重启Windows 服务器
,发现Nginx 服务器
起不来了,经过一系列排查,有个叫MsDepSvc
的进程占用了80端口
,而MsDepSvc进程
其实就是"Web Deployment Agent Service"
服务。
当时很是气恼又感觉"Web Deployment Agent Service"
服务没有什么卵用,想要卸掉它。所以在重新安装 Web Deploy
的时候,选择自定义安装
,并且取消勾选"Remote Agent Service"
的安装选项,之后一直在愉快的玩 Gitlab-CI
。
现在又让我装回去?好吧,只好找一找有没有能够让"Web Deployment Agent Service"
服务不占用80端口
,又能正常运行与Nginx服务器
的方法。
在这里找到解决方案:https://stackoverflow.com/questions/5867392/can-the-web-deploy-agent-run-on-a-port-other-than-80-on-iis6
心急的我,还没看完这个帖子的所有回复,就开始按照它标记为最佳答案的教程
来做。做到一半,发现Windows 服务器
不能识别httpcfg
命令。
百度才知道在Windows Vista
以下的版本支持httpcfg
,以上版本不支持httpcfg
,改为netsh
。也就是说Windows 2008
以上的服务器只能用netsh
命令而不是httpcfg
命令。
认真地看完帖子的所有回复,原来已经有人给出了在Windows 7
以上版本的httpcfg
命令的替代命令netsh
的执行语法。
按照教程:
- 停止
"Web Deployment Agent Service"
服务 (net stop msdepsvc
) - 编辑以下注册表值:
HKLM\SYSTEM\CurrentControlSet\Services\MsDepSvc\Parameters\ListenUrl
将http://+:80/MsDeployAgentService
改为http://+:8171/MsDeployAgentService
Windows XP,Windows Server 2003
以下服务器运行如下命令:
httpcfg query urlacl
httpcfg delete urlacl /u http://+:80/MsDeployAgentService/
httpcfg set urlacl /u http://+:8171/MsDeployAgentService/ /a D:(A;;GX;;;NS)
Windows Vista,Windows Server 2008
以上服务器运行如下命令:
netsh http show urlacl
netsh http delete urlacl url=http://+:80/MSDEPLOYAGENTSERVICE/
netsh http add urlacl url=http://+:8171/MSDEPLOYAGENTSERVICE/ sddl=D:(A;;GX;;;NS)
- 启动
"Web Deployment Agent Service"
服务 (net start msdepsvc
)
依次按照步骤做完后,在 Visual Studio
上执行发布,提示:
Web 部署任务失败。((2018/1/11 星期四 10:29:39)在远程计算机上处理请求时出错。)
(2018/1/11 星期四 10:29:39)在远程计算机上处理请求时出错。
无法执行此操作。请与服务器管理员联系,检查授权和委派设置。
再次搜索解决方案,找到了这个博文:https://www.cnblogs.com/SilenceTom/p/5582932.html
原来,安装完 Web Deploy
后,会在服务器上创建两个本地账户:WDeployConfigWriter
和WDeployAdmin
,而这两个本地账户的密码默认设置为"过一段时间就过期"
。
因此,给这两个本地账户WDeployConfigWriter
和WDeployAdmin
重设密码,并设置为"永不过期"
。
然后到IIS
的管理服务委派(Management Service Delegation)
更新所有使用了WDeployConfigWriter
和WDeployAdmin
账户的规则(Rule)
的凭证信息(即账户密码)
。
再次在 Visual Studio
上执行发布,顺利发布Web网站
到IIS服务器
上了,并且没有弹出"请输入密码以连接到 Web Deploy 客户端"
提示框。
执行bat发布命令脚本
,也是顺利发布。
总算搞定。
PS:
运行环境:
GitLab 10
Windows Server 2012
Visual Studio 2015
Web Deploy 安装与配置:
https://docs.microsoft.com/en-us/iis/install/installing-publishing-technologies/installing-and-configuring-web-deploy
Web Deploy 自动备份:
https://docs.microsoft.com/en-us/iis/publish/using-web-deploy/web-deploy-automatic-backups
MS Deploy 发布时包含其它文件:
https://docs.microsoft.com/en-us/aspnet/web-forms/overview/deployment/visual-studio-web-deployment/deploying-extra-files
Web Deploy 下载地址:
https://www.iis.net/downloads/microsoft/web-deploy
直接下载地址:
English: x86 / x64
Chinese (Simplified): x86 / x64
引用与感谢以下链接的人:
https://stackoverflow.com/questions/5867392/can-the-web-deploy-agent-run-on-a-port-other-than-80-on-iis6
https://www.cnblogs.com/SilenceTom/p/5582932.html
Web Deploy 发布网站错误 检查授权和委派设置的更多相关文章
- Web Deploy发布网站错误 检查授权和委派设置
web Deploy发布asp.net网站给我们提供方便,开始配置好了可以方便的发布网站,但是过久就出现无法执行此操作.请与服务器管理员联系,检查授权和委派设置.花了好长时间找到问问所在.现在解决方法 ...
- Web Deploy发布网站及常见问题解决方法(图文)
Web Deploy发布网站及常见问题解决方法(图文) Windows2008R2+IIs7.5 +Web Deploy 3.5 Web Deploy 3.5下载安装 http://www.iis.n ...
- Web Deploy发布网站一条龙解决方案
Web Deploy工具对于ASP.NET开发人员来说一定不陌生,没有用过也经常见到,Web Deploy发布十分方便而且在发布时会帮助用户检验发布文件的正确性.接下来介绍一下基础使用. 第一步:安装 ...
- VS2015 使用 Web Deploy 发布网站到 WindowsServer2008 R2服务器详解
使用原因:由于开发期间需要将开发出的网站随时提交到服务器以便公司高层随时访问所以要求将开发出的网站每天发布到服务器,频繁度比较高,因此不能再使用之前的方式(发布到本地后再拷贝文件到服务器),所以想到了 ...
- Visual Studio通过Web Deploy发布网站报错:An error occurred when the request was processed on the remote computer.
这个问题很奇怪,不管我怎么重启服务器和自己的开发机,都没有用. 在网上找了很多资料,有说可以尝试去读Windows的错误日志,然后通过日志找原因…(详见Stackoverflow:http://sta ...
- Visual Studio 使用 Web Deploy 发布远程站点
Ø 简介 本文介绍 Visual Studio 如何使用 Web Deploy发布远程站点,有时候我们开发完某个功能时,需要快速将更改发布至服务器.通常 Visual Studio 可以采用两种方式 ...
- Visual Studio 2019 使用 Web Deploy 发布远程站点到IIS服务器
Visual Studio 2019 使用 Web Deploy 发布远程站点到IIS服务器的方式 在开发完项目之后,我们需要把开发的项目发布到指定的服务器上,有两种方式,如下 1.把项目发布成文件系 ...
- Visual Studio 使用Web Deploy发布项目
工具:Web Deploy 3.6 点击下载 (强烈推荐使用独立的Web Deploy 安装包安装) 使用 Web Platform Installer 安装 Web Deploy(3.5,3.6都安 ...
- VS使用WEB DEPLOY发布
背景是这样的,公司有两台服务器,平时一台备用,另一台做为主生产机器.当有大量补丁或者安装什么东西需要重启的时候,交其中一台直接关掉IIS,然后重启即可,此时另一台负责处理用户请求. 之前一台服务器一个 ...
随机推荐
- require和import区别
遵循的模块化规范不一样 模块化规范:即为 JavaScript 提供一种模块编写.模块依赖和模块运行的方案.谁让最初的 JavaScript 是那么的裸奔呢——全局变量就是它的模块化规范. requi ...
- 20189210牟健 《Linux内核原理与分析》第二周作业
本周学习了汇编指令以及通过反汇编一个小程序来了解栈的变化 写了一个简单的C程序,如图所示: 通过gcc -s -o main.s main.c -m32指令将其编译成汇编程序 打开该汇编文件并删除不重 ...
- ajax 传递中文字符参数 问题
使用ajax 传递中文字符串时, 服务端会接收不到预期的 中文字符. 此时,需要对 js中的中文字符参数进行 编码, 到达服务端后, 再为其解码 即可. 前端: var url = '....'; ...
- apt-get安装mysql
1,检查是否已安装. 2,安装: apt-get install mysql-client-core-5.5 apt-get install mysql-server mysql-client 安装过 ...
- mysql千万级数据量查询出所有重复的记录
查询重复的字段需要创建索引,多个条件则创建组合索引,各个条件的索引都存在则不必须创建组合索引 有些情况直接使用GROUP BY HAVING则能直接解决:但是有些情况下查询缓慢,则需要使用下面其他的方 ...
- 20175303 2018-2019-2 《Java程序设计》第8周学习总结
20175303 2018-2019-2 <Java程序设计>第8周学习总结 教材学习内容总结 本周学习<Java程序设计>第十五章: 泛型: 泛型(Generics)的主要目 ...
- 未能执行URL
在 <compilation debug="true"> 下 加入: <buildProviders> <add extension=".h ...
- DAX/PowerBI系列 - 玩转阿里云 Alicloud Pricing
DAX/PowerBI系列 - 玩转 阿里云主机 Ali Cloud ECS 难度: ★★☆☆☆(1星) 适用范围: ★★★☆☆(3星) 欢迎交流与骚扰 这是啥: 双十一就到了,码农门,程序猿们有没有 ...
- How to Preloading content with rel preload
The preload value of the <link> element's rel attribute allows you to write declarative fetch ...
- 接口自动化框架(java)--1.项目概述
项目github地址: https://github.com/tianchiTester/API_AutoFramework 这套框架的报告是自己封装的 1.测试基类TestBase: 接口请求的te ...