Windows平台部署Asp.Net Core应用
一. 简介
Asp.Net Core 部署方式有两种:依赖框架和独立部署。
1. 框架依赖的部署:
顾名思义,依赖框架的部署 (FDD) 依赖目标系统上存在共享系统级版本的 .NET Core。 由于已存在 .NET Core,因此应用在 .NET Core 安装程序间也是可移植的。 应用仅包含其自己的代码和任何位于 .NET Core 库外的第三方依赖项。 FDD 包含可通过在命令行中使用 dotnet 实用程序启动的 .dll 文件。 例如,dotnet app.dll 就可以运行一个名为 app 的应用程序。
对于 FDD,仅部署应用程序和第三方依赖项。 不需要部署 .NET Core,因为应用将使用目标系统上存在的 .NET Core 版本。 这是定目标到 .NET Core 的 .NET Core 和 ASP.NET Core 应用程序的默认部署模型。
优点
① 不需要提前定义 .NET Core 应用将在其上运行的目标操作系统。 因为无论什么操作系统,.NET Core 的可执行文件和库都是用通用的 PE 文件格式,因此,无论什么基础操作系统,.NET Core 都可执行应用。
② 部署包很小。 只需部署应用及其依赖项,而无需部署 .NET Core 本身。
③ 许多应用都可使用相同的 .NET Core 安装,从而降低了主机系统上磁盘空间和内存使用量。
这种模式是跨平台的,只要在对应平台装上runtimes,然后把发布包做成可移植的,同一个发布包就可以跨平台了。
缺点
① 仅当主机系统上已安装你设为目标的 .NET Core 版本或更高版本时,应用才能运行。
② 如果不了解将来版本,.NET Core 运行时和库可能发生更改。 在极少数情况下,这可能会更改应用的行为。
2. 独立部署:
与 FDD 不同,独立部署 (SCD) 不依赖目标系统上存在的共享组件。 所有组件(包括 .NET Core 库和 .NET Core 运行时)都包含在应用程序中,并且独立于其他 .NET Core 应用程序。 SCD 包括一个可执行文件(如 Windows 平台上名为 app 的应用程序的 app.exe),它是特定于平台的 .NET Core 主机的重命名版本,还包括一个 .dll 文件(如 app.dll),而它是实际的应用程序。
对于独立部署,可以部署应用和所需的第三方依赖项以及生成应用所使用的 .NET Core 版本。 创建 SCD 不包括各种平台上的 .NET Core 本机依赖项,因此运行应用前这些依赖项必须已存在。
从 NET Core 2.1 SDK(版本 2.1.300)开始,.NET Core 支持修补程序版本前滚。 在创建独立部署时,.NET Core 工具会自动包含你的应用程序所指向的 .NET Core 版本的最新服务的运行时。 (最新服务的运行时包括安全修补程序和其他 bug 修复程序。)服务的运行时不需要存在于你的生成系统上;它会从 NuGet.org 自动下载。
FDD 和 SCD 部署使用单独的主机可执行文件,使你可以使用发布者签名为 SCD 签署主机可执行文件。
优点
① 可以对与应用一起部署的 .NET Core 版本具有单独的控制权
② 请放心,目标系统可以运行你的 .NET Core 应用,因为你提供的是应用将在其上运行的 .NET Core 版本
缺点
① 由于 .NET Core 包含在部署包中,因此必须提前选择为其生成部署包的目标平台
② 部署包相对较大,因为需要将 .NET Core 和应用及其第三方依赖项包括在内。
他不能跨平台,每个包都有对应的运行时,所以一份代码只能在对应的平台使用。
3. 部署的手段:文件系统、Web部署、FTP。
二. 文件系统发布至IIS
文件系统发布就是最传统的一种发布方式,利用开发工具生成一个发布包,然后部署到IIS上。
服务器上需要安装.Net运行时和支持Module,下载地址:https://dotnet.microsoft.com/download/dotnet-core/2.2
1. 生成发布包:

2. 部署到IIS:
和普通的Asp.Net Web项目相同,但需要把进程池改成 " 无托管代码 "。

三. Web部署发布至IIS
1. 前提:
安装 dotnet-hosting(这里的版本为2.2.4,该安装包 包括:dotnet runtime 2.2.4 和 dotnet hosting)和 Web Deploy v3.6。
PS:runtime是dotnet程序的运行时,hosting是IIS支持dotnet core程序必备的模块(安装完后,IIS模块中会有AspNetCoreModuleV2模块),WebDeploy v3.6 是服务器端支持“web部署”方式必备的程序,而安装WebDeploy微软推荐通过“web platform”这个软件来安装(类似于360软件管家的性质)。
特别注意: 如果仅仅是本地运行,安装runtimes就行了,如果是服务器上部署,要安装dotnet-hosting,里面已经包含了对应版本的runtimes。
下载地址:https://dotnet.microsoft.com/download/dotnet-core
2. 必备环境的安装
(一). dotnet-hosting安装
(1). 安装dotnet-hosting,去【https://dotnet.microsoft.com/download/dotnet-core/2.2】地址,下载dotnet-hosting程序。

(2). 在WinServer2016上安装【dotnet-hosting-2.2.4-win.exe】,安装过程如下图:

(3). 安装完毕后,cmd命令【dotnet --list-runtimes】查看版本为 2.2.4 。在IIS模块中查看有 AspNetCoreModuleV2.


(二). Web Deploy的安装
(1). 先安装【Web PlatForm】,通过 Web PlatForm 安装 Web Deploy,下载地址:Https://www.microsoft.com/web/downloads/platform.aspx
PS:当然也可以直接安装Web Deploy,下载地址: https://www.microsoft.com/zh-cn/download/details.aspx?id=43717
(2). 在里面搜索 web deploy,进行 安装:



3. 发布步骤
(1). 选择Web的方式进行发布,输入服务器地址,账号密码、项目名称、项目地址,如下图:


(2). 点击,发布进行发布,如下图:发布成功。

补充:此处可能第一次链接上不上去,发布失败,这个时候,去服务器上把这个项目关闭,然后进行发布,发布成功后,在把该项目打开,以后再发布就正常了。
假设还有问题,在发布文件夹下新建要给 App_Offline.htm即可,用于关闭IIS。
四. FTP发布至IIS
分析:FTP发布不同于上述Web部署的模式,服务器端不需要安装任何额外的插件,仅需要给服务器添加一个FTP发布即可。
1. 服务端添加FTP发布
(1). 选中IIS中的项目,添加FTP发布,步骤如下图:


添加完毕,点击绑定,发现里面多了一个FTP的21端口的地址。

注:如果是阿里云或者其它云服务器,这里使用项目端口8015和FTP的21端口,需要在服务器的管理端配置一些,然后还要在服务器的防火墙中配置一下入站,部分操作如下图:


(2) 在VS中进行发布,选择FTP的模式发布,配置 服务器地址、登录账号、密码、项目地址,点击发布即可。


五. Windows服务的形式发布
很多情况下,我们不使用IIS,而是将Asp.Net Core程序发布成Windows服务的形式,步骤如下:
1. 通过Nuget安装程序集【 Microsoft.AspNetCore.Hosting.WindowsServices 】

- 通过右键项目,通过编辑项目的 xxx.csproj文件编辑项目的RID,RID的编辑规则如下图:
 

该项目发布在win10下,如下图

- 在Main函数中将Run改成RunAsService,同时可以通过UseUrls来配置访问地址,然后对该项目进行发布。
 

- 利用sc相关的windows服务的指令进行服务的创建、开启、查询、停止、删除。(指令需要以管理员身份运行)
 
(1) 创建服务:sc create MyService binPath= "c:\svc\AspNetCoreServiceSample.ex"
(2) 启动服务:sc start MyService
(3) 检查服务状态:sc query MyService
(4) 停止服务:sc stop MyService
(5) 卸载服务:sc delete MyService (删除前必须先停止服务)


来源:https://www.cnblogs.com/yaopengfei/p/10733772.html
Windows平台部署Asp.Net Core应用的更多相关文章
- Windows平台部署 Asp.Net Core 3.1.0,将 ASP.NET Core 应用发布到 IIS ,使用 IIS 在 Windows 上托管 ASP.NET Core
		
第一部分:本教程介绍如何在 IIS 服务器上托管 ASP.NET Core 应用. 官方文档地址:https://docs.microsoft.com/zh-cn/aspnet/core/tutori ...
 - 第三节:Windows平台部署Asp.Net Core应用(基于IIS和Windows服务两种模式)
		
一. 简介 二. 文件系统发布至IIS 三. Web部署发布至IIS 四. FTP发布至IIS 五. Windows服务的形式发布 ! 作 者 : Yaopengfei(姚鹏飞) 博客地址 ...
 - Windows 服务器部署 asp.net core
		
踩坑日记与 Windows 服务器部署 asp.net core 指南. 准备 操作系统:Windows Server 2008 R2 或更高版本 文件: Microsoft Visual C++ 2 ...
 - 如何优雅的利用Windows服务来部署ASP.NET Core程序
		
上一篇文章中我给大家讲述了五种部署ASP.NET Core网站的方法,其中有一种方式是通过Windows服务来进行部署,这样既可以做到开启自启动,又不会因为iis的反向代理而损失部分性能.但是美中不足 ...
 - Windows + IIS 环境部署Asp.Net Core App
		
环境:Windows Server 2012, IIS 8, Asp.Net Core 1.1. 不少人第一次在IIS中部署Asp.Net Core App的人都会遇到问题,会发现原来的部署方式无法运 ...
 - Windows Server 2008 R2 + IIS 环境部署Asp.Net Core App
		
Windows + IIS 环境部署Asp.Net Core App 环境:Windows Server 2012, IIS 8, Asp.Net Core 1.1. 不少人第一次在IIS中部署A ...
 - Centos7安装jexus,部署asp.net core,asp.net mvc
		
什么是Jexus 官网解释:https://www.jexus.org/ Jexus是一款Linux平台上的高性能WEB服务器和负载均衡网关,Jexus Web Service,简称JWS,以支持AS ...
 - 在 Visual Studio 中部署 ASP.NET Core 应用
		
另一篇:在 Docker 中手工部署 ASP.NET Core 应用 操作步骤 1. 安装 Docker For Windows(安装之前 Windows 需要 开启 Hyper-V 虚拟机功能 ) ...
 - 自动部署Asp.Net Core到Docker
		
原文链接:个人博客:自动部署Asp.Net Core至Docker 本文简介 最近在开发一个管理系统,代码框架是用的前后台分离的方式 后台使用的是Asp.Net Core平台,开发所有业务,向前台提供 ...
 
随机推荐
- Spring框架之beans源码完全解析
			
导读:Spring可以说是Java企业开发里最重要的技术.而Spring两大核心IOC(Inversion of Control控制反转)和AOP(Aspect Oriented Programmin ...
 - DTU的工作原理和流程
			
DTU是无线数据传输模块,采用2G,3G,4G网络,将本地串口数据经DTU打包成TCP或者UDP数据进行远程传输的设备.使用方便.已经在各行业远程数据传输,设备监控等领域大量应用.如智能仪器仪表.智能 ...
 - CentOS7下一键小白搭建seafile pro云盘
			
搭建前准备工作 vps或者云服务器,个人搭建使用建议腾讯云,公司搭建使用建议阿里云. 没有服务器的小伙伴可以下面链接进入看下,腾讯云的配置带宽会比阿里云的好点. 阿里云新人优惠服务器 腾讯云云上特惠 ...
 - AI时代,还不了解大数据?
			
如果要问最近几年,IT行业哪个技术方向最火?一定属于ABC,即AI + Big Data + Cloud,也就是人工智能.大数据和云计算. 这几年,随着互联网大潮走向低谷,同时传统企业纷纷进行数字化转 ...
 - mysql 触发器的创建和使用
			
什么是触发器 触发器(TRIGGER)是MySQL的数据库对象之一,从5.0.2版本开始支持.该对象与编程语言中的函数非常类似,都需要声明.执行等.但是触发器的执行不是由程序调用,也不是由手工启动,而 ...
 - Linux  笔记1
			
linux netstat -an | grep 8081 查看端口进程 window netstat -ano|findstr "1433" taskkill -pid ** - ...
 - Python_迭代器与生成器
			
迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式.. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后 ...
 - To the Max(动态规划)
			
Description Given a two-dimensional array of positive and negative integers, a sub-rectangle is any ...
 - IDEA 使用的一些快捷键记录
			
1,ctrl+tab 导航当前编辑打开的所有文件,按住Ctrl,使用backspace 可以关闭某个文件 2,ctrl+shift+alt+s 打开项目设置,alt+shift+s 打开所有设置 3, ...
 - 简单几步就能把素材变成大片?老司机推荐Vegas
			
"素材编辑"一般分为两种,一种是对时间线素材长度和位置的编辑,另一种就是遮罩法操作. 第一种,裁剪素材(将素材在我们选定的位置一分为二),对时间线上的素材进行裁剪,有两种方法: 一 ...