06
2025
01
23:34:42

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.96Publish completed.ERROR: Job failed: exit status 1

如图:
402416-20180111104204285-1808647510.png

我在 Visual Studio 上手动发布该Web项目,点发布时,弹出了"请输入密码以连接到 Web Deploy 客户端"提示框。
402416-20180111104549113-1971851762.png

我输入密码后,可以成功发布。
我感觉有点奇怪,为什么 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" data-pretit="windows" style="box-sizing: border-box; outline: 0px; margin: 0px 3px 0px 0px; padding: 0px 18px 0px 0px; font-synthesis-style: auto; overflow-wrap: break-word; cursor: pointer; background: url("../img/gitcode-key.png") right center / 14px 14px no-repeat transparent; box-shadow: none; color: #4EA1DB !important;">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的执行语法。
按照教程:

  1. 停止"Web Deployment Agent Service"服务 (net stop msdepsvc)

  2. 编辑以下注册表值: HKLM\SYSTEM\CurrentControlSet\Services\MsDepSvc\Parameters\ListenUrl
    将 http://+:80/MsDeployAgentService 改为 http://+:8171/MsDeployAgentService

  3. Windows XP,Windows Server 2003以下服务器运行如下命令:

httpcfg query urlaclhttpcfg 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 urlaclnetsh http delete urlacl url=http://+:80/MSDEPLOYAGENTSERVICE/netsh http add urlacl url=http://+:8171/MSDEPLOYAGENTSERVICE/ sddl=D:(A;;GX;;;NS)
  1. 启动"Web Deployment Agent Service"服务 (net start msdepsvc)

依次按照步骤做完后,在 Visual Studio 上执行发布,提示:

Web 部署任务失败。((2018/1/11 星期四 10:29:39)在远程计算机上处理请求时出错。)(2018/1/11 星期四 10:29:39)在远程计算机上处理请求时出错。无法执行此操作。请与服务器管理员联系,检查授权和委派设置。

402416-20180111111805613-530603429.png

再次搜索解决方案,找到了这个博文:https://www.cnblogs.com/SilenceTom/p/5582932.html
原来,安装完 Web Deploy 后,会在服务器上创建两个本地账户:WDeployConfigWriterWDeployAdmin,而这两个本地账户的密码默认设置为"过一段时间就过期"
因此,给这两个本地账户WDeployConfigWriterWDeployAdmin重设密码,并设置为"永不过期"
然后到IIS管理服务委派(Management Service Delegation)更新所有使用了WDeployConfigWriterWDeployAdmin账户的规则(Rule)凭证信息(即账户密码)

再次在 Visual Studio 上执行发布,顺利发布Web网站IIS服务器上了,并且没有弹出"请输入密码以连接到 Web Deploy 客户端"提示框。
执行bat发布命令脚本,也是顺利发布。
总算搞定。

PS:

运行环境:GitLab 10Windows Server 2012Visual 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

相关参考:

https://www.cnblogs.com/VAllen/p/Web-Deploy-Failed.html


Web deployment task failed. ((2019/8/28 16:12:54) An error occurred when the request was processed on the remote computer.)

是由于使用webDeploy进行发布时,会默认在远程服务器上创建两个账号WDeployAdmin, WDeployConfigWriter,默认设置是账号会过期的,出现这个报错有可能这两个账号已经过期了,可以尝试在 : 计算机管理>本地用户和组>用户中,找到这两个账号,右键,选择属性,修改为如下图所示


参考资料:https://stackoverflow.com/questions/6939150/web-deployment-task-build-failed

601c2d4e6ffc72e01ed0ae4c519df5bf_87501e63dff11eb0f9a567508c7d1155.png




1、安装与配置

安装过程:确保你的系统满足Web Deploy的最低要求,对于Windows 2008 R2+IIs7.5,你可以下载并安装Web Deploy 3.5,安装时,只需跟随安装向导点击“下一步”即可完成安装。

配置管理服务:安装完成后,需要确认“管理服务”是否正在运行,这可以通过查看IIS管理控制台来确认。

2、添加管理账号

创建IIS管理器用户:在IIS管理器中,你需要添加一个基于IIS的账号,此账号并非Windows账号,添加账号后,你还需要为该账号分配适当的权限。

重启IIS服务:添加完账号后,重启IIS服务以确保更改生效。

3、站点设置


选择管理账号:在IIS管理器中,选择一个站点进入其“IIS 管理器权限”,然后在操作窗体中点击“允许用户…”,从IIS管理器中选择之前添加的用户。

应用设置到VS:在Visual Studio中,右击你的项目,选择“发布”,然后在发布目标中选择使用刚才添加的账号进行认证和连接。

4、常见问题及解决方法

错误信息查看:如果在部署过程中遇到错误,可以通过查看服务器上的“Web Deploy”事件日志来获取详细的错误信息。

解决认证失败问题:如果部署时出现认证失败的情况,检查你在IIS中设置的管理账户是否正确,并确保该账户具有足够的权限。

处理连接失败:若无法连接到服务器,确认服务器的Web Deploy服务已启动,同时检查网络连接是否正常。


如果我忘记了IIS管理账号的密码怎么办?

如果你忘记了IIS管理账号的密码,可以通过IIS管理器重置密码,选择相应的账号,然后点击“更改密码”按钮来设置新密码。

在使用Web Deploy部署时遇到数据库连接错误该如何解决?

数据库连接错误通常由于连接字符串配置不正确或数据库服务未运行引起,检查你的连接字符串是否正确配置,并且确认数据库服务正在运行状态,如果问题仍未解决,尝试直接在数据库服务器上运行相同的连接字符串,看是否可以成功连接。




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/8833.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: