架构师_程序员

查看: 138|回复: 0

[资料] 【实战】使用 VS 2019 将项目发布到远程 IIS 服务器

[复制链接]
发表于 2020-10-9 12:09:22 | 显示全部楼层
在以往发布项目的时候,都是将文件复制粘贴到站点目录,或者通过ftp上传到站点目录,现在随着持续集成、自动化运维、自动化发布的出现,发布项目也在日新月异。

本文介绍,如何通过 vs 2019 远程发布到远程 iis 站点下。

远程服务器系统:Windows Server 2019 64 位

服务器配置

1.添加 iis,安装 .net 框架(略)

2.下载安装 Web Deploy

Web Deploy 可以用于本地和远程部署Web项目,地址:https://www.iis.net/downloads/microsoft/web-deploy

QQ截图20201009104845.jpg

在安装的时候,选择“完整”安装,安装完成后,会在服务中看到“Web Management Service”服务,如下图:

QQ截图20201009110343.jpg

如果未安装,在远程发布的时候,vs 会报错如下:

---------------------------
Microsoft Visual Studio
---------------------------
未能连接到远程计算机(“xx”)。请确保在远程计算机上安装了 Web Deploy 并启动了所需的进程(“Web Management Service”)。  在以下位置了解更多信息: https://go.microsoft.com/fwlink/ ... ATION_NOT_REACHABLE。 无法连接到远程服务器
---------------------------
确定   
---------------------------
QQ截图20201009103733.jpg

3.安装“IIS 管理脚本和工具”

转到“选择服务器角色” > “Web 服务器(IIS)” > “管理工具”,然后选择“IIS 管理脚本和工具”角色,点击“下一步”,然后安装角色 。

QQ截图20201009111311.jpg

4.IIS 启用远程连接

在 IIS 找到管理服务,启用远程连接,如下图:

QQ截图20201009112103.jpg

QQ截图20201009111718.jpg

(备注:在防火墙和安全组要开放8172入站端口

5.新建 IIS 站点

新建一个名称为 test1 的站点,如下图:

QQ截图20201009112425.jpg

6.IIS 添加管理用户

添加 IIS 管理器用户,如下图:

QQ截图20201009111939.jpg QQ截图20201009112224.jpg

同时,在 test1 站点,添加授权,如下图:

QQ截图20201009112544.jpg QQ截图20201009112637.jpg

如果未添加授权,在远程发布的时候,会报错如下:

---------------------------
Microsoft Visual Studio
---------------------------
已使用 Web 管理服务连接到远程计算机(“xxx”),但未能授权。请确保你使用了正确的用户名和密码、你连接的站点已存在并且凭据代表的用户有权访问该站点。  在以下位置了解更多信息: https://go.microsoft.com/fwlink/ ... R_USER_UNAUTHORIZED。 远程服务器返回错误: (401) 未经授权。
---------------------------
确定   
---------------------------
发布 ASP.NET MVC 项目

首先,使用 vs 2019 新建一个 .NET 4.6.2 的 asp.net mvc 项目,名称为:WebAutomatedDeployment,

再新建两个类库,网站程序同时引用这2个类库。(新建和引用2个类库,原因是模拟更接近正式的项目)


尝试启动项目,如下图:

QQ截图20201009113001.jpg

右击项目,选择发布,web服务器(iis)->web部署,填写服务器信息,如下图:

QQ截图20201009113041.jpg QQ截图20201009113051.jpg QQ截图20201009113234.jpg

验证连接,测试通过,如下图:

QQ截图20201009113305.jpg

尝试发布的时候,报错如下:

Web 部署任务失败。((2020/10/9 11:34:38)在远程计算机上处理请求时出错。)

(2020/10/9 11:34:38)在远程计算机上处理请求时出错。
服务器在处理请求时遇到问题。请与服务器管理员联系以了解详细信息。        WebAutomatedDeployment                0
可以通过服务器事件查看器查看具体的错误,如下图:

QQ截图20201009120210.jpg

User: itsvse
Client IP: xxx
Content-Type: application/msdeploy
Version: 9.0.0.0
MSDeploy.VersionMin: 7.1.600.0
MSDeploy.VersionMax: 9.0.3802.0
MSDeploy.Method: Sync
MSDeploy.RequestId: def8d9f7-1a72-4b19-8b75-919f8c6a9604
MSDeploy.RequestCulture: zh-CN
MSDeploy.RequestUICulture: zh-CN
ServerVersion: 9.0.1973.0
Skip: objectName="^configProtectedData$"
Provider: auto, Path:
发生了传播到客户端的跟踪部署代理异常。请求 ID“def8d9f7-1a72-4b19-8b75-919f8c6a9604”,请求时间戳:“2020/10/9 11:51:29”。错误详细信息:
System.UnauthorizedAccessException: 尝试执行未经授权的操作。
   在 System.Security.AccessControl.Win32.SetSecurityInfo(ResourceType type, String name, SafeHandle handle, SecurityInfos securityInformation, SecurityIdentifier owner, SecurityIdentifier group, GenericAcl sacl, GenericAcl dacl)
   在 System.Security.AccessControl.NativeObjectSecurity.Persist(String name, SafeHandle handle, AccessControlSections includeSections, Object exceptionContext)
   在 System.Security.AccessControl.NativeObjectSecurity.Persist(String name, AccessControlSections includeSections, Object exceptionContext)
   在 Microsoft.Web.Deployment.FileSystemSecurityEx.Persist(String path, Boolean isFile)
   在 Microsoft.Web.Deployment.SetAclProvider.Add(DeploymentObject source, Boolean whatIf)
   在 Microsoft.Web.Deployment.DeploymentObject.Update(DeploymentObject source, DeploymentSyncContext syncContext)
   在 Microsoft.Web.Deployment.DeploymentSyncContext.HandleUpdate(DeploymentObject destObject, DeploymentObject sourceObject)
   在 Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source)
   在 Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject)
   在 Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, ContentRootTable contentRootTable, Nullable`1 syncPassId, String syncSessionId)
   在 Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentAsyncData asyncData, Nullable`1 passId, String user, String siteName)
   在 Microsoft.Web.Deployment.DeploymentAgent.HandleRequestWorker(DeploymentAgentAsyncData asyncData)
   在 Microsoft.Web.Deployment.DeploymentAgent.HandleRequest(DeploymentAgentAsyncData asyncData)
解决方案:

重新启动 vs 工具,点击发布,会弹出如下图:

QQ截图20201009120348.jpg

勾选“为Visual Studia的将来会话保存此证书”即可解决。

第一次发布的时候,比较慢,因为需要将全部的文件上传到服务器,如下图:

QQ截图20201009120517.jpg

尝试修改 Index.cshtml 页面文件,点击重新发布,只会更新如下3个文件,如下图:

QQ截图20201009120709.jpg

刷新网站,发现已经更新,如下图:

QQ截图20201009120835.jpg

(完)




上一篇:在CentOS 7 上搭建 ocserv vpn 代理
下一篇:Aspose.Cells 三剑客
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2020-10-28 14:36

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表