ASP.NET Core教程:ASP.NET Core 程序部署到Windows系统

框架依赖

一、发布
框架依赖(FDD):即Framework-dependent deployments的缩写。这种发布方式依赖于Framework框架,即要部署的服务器上面必须按照ASP.NET Core 运行时环境(ASP.NET Core Runtime)。这种部署方式是微软默认推荐的。下面我们看看如何使用框架依赖进行部署。

我们在项目上面右键选择“发布”:
在这里插入图片描述

发布目标选择发布到文件夹,将文件发布到FDD文件夹,然后点击“高级”:
在这里插入图片描述

在发布界面,部署模式选择框架依赖,目标运行时选择默认的可移植:
在这里插入图片描述

我们看到目标运行时下面有好多选项,这里选择“可移植”,表示编译后的文件可以部署到windows平台、Max平台、Linux平台。如果只想部署到某一个平台,那么可以选择具体的一个平台。比如只想部署到Linux系统的x64架构,那么选择“linux-x64”即可。

最后点击“保存”按钮,然后发布即可:
在这里插入图片描述

这样就使用FDD方式发布成功了。我们看看发布后的文件:
在这里插入图片描述

可以看到,框架依赖方式发布后的文件很少。

二、部署

配置部署环境

我们在上面的步骤中,已经把程序发布到文件夹了,下面进行部署。我们先演示如何使用FDD模式进行部署。FDD模式需要依赖于Framework框架,由于我们只是部署,所以只需要安装ASP.NET Core Runtime即可,不需要安装SDK。我们首先需要在服务器上面安装ASP.NET Core runtime,去微软官网下载相应版本进行安装即可,这里选择ASP.NET Core Runtime 3.1:
在这里插入图片描述

这里选择下载Hosting Bundle。因为Hosting Bundle包括了.Net Core运行时和IIS支持。

下载完成以后,双击exe文件即可进行安装:

安装完成以后我们在命令行里面输入下面的命令,检查是否安装成功:

dotnet --info

如下图所示:
在这里插入图片描述

可以看到提示我们已经安装了.NET Core runtimes环境,没有安装SDK。

由于我们需要部署到IIS上面,所以安装完以后要重启电脑,或者使用下面的命令行重启IIS服务:

net stop was /y
net start w3svc

如下图所示:
在这里插入图片描述

注意:要以管理员身份运行命令行,否则会报拒绝访问的错误

1、控制台方式部署
指定URL
dotnet dll文件名称 --urls http://*:8090

指定端口号
dotnet dll文件名称 --p 8090

直接以控制台的方式部署程序,一般适合于我们自己开发调试程序,真实的生产环境中,不建议使用这种方式。这种方式是Kestrel服务器直接处理HTTP请求,在windows系统中,我们一般是把ASP.NET Core 程序部署在IIS上面,IIS作为反向代理服务器使用。下面我们看看如何部署到IIS上。

2、部署到IIS

在传统的.NET Framework中,ASP.NET程序发布到IIS上面,是由IIS的工作进程(w3wp.exe)托管的,在任务管理器中可以找到该进程。在ASP.NET Core程序中不再是由IIS工作进程托管,而是使用自托管Web服务器(Kestrel)运行,IIS则是作为反向代理的角色转发请求到Kestrel不同端口的ASP.NET Core程序中,然后将接收到的请求推送至中间件管道中,处理完请求后在将HTTP响应数据重新回写到IIS中,最终通过IIS转达到不同的客户端。在这过程中,最重要的角色便是AspNetCoreModuleV2(asp.net core 2.0以前版本中是AspNetCoreModuleV2,asp.net core 2.x版本是AspNetCoreModule,从3.0开始又改回了AspNetCoreModuleV2),它是IIS中的一个模块,HTTP请求进入到IIS之后便立即由它转发,并迅速重定向到ASP.NET Core项目中。因为IIS只是作为反向代理负责转发请求,不负责监听HTTP请求端口,所以不需要使用应用程序池来托管我们的代码。

电脑上面安装好了asp.net core 运行时以后,在IIS的模块里面会有AspNetCoreModule:
在这里插入图片描述

双击“模块”,查看里面是否有AspNetCoreModule模块:
在这里插入图片描述

接下来在IIS里面添加网站,如下图所示:

在这里插入图片描述

独立部署

独立(SCD):即Self-contained deployments的缩写。这种方式表示独立提供运行时环境,即要部署的服务器上面不需要安装ASP.NET Core运行时环境即可部署。由于不需要预先安装运行时环境,所以这种发布方式编译后的文件大小会比框架依赖方式编译后的文件大小大。在发布的时候,部署模式选择独立即可:
在这里插入图片描述

这时候目标运行时就没有可移植选项了,由于我们要在windows系统上面部署,所以这里选择win-x64。最后保存发布即可。发布完成以后,我们在看看发布后的文件:
在这里插入图片描述

可以看到,发布后的文件很多,这时因为发布的时候有一些程序运行需要使用的dll文件夹会打包进来。

我们双击该exe文件,会看到直接以控制台的方式启动:

在这里插入图片描述

如果双击exe后访问不了网址,那是因为需要在代码中指定默认端口号。或者使用dotnet dll文件名称也可以部署。

 //默认端口号9200if (args.Length > 1 && args[0] == "-p"){string portStr = args[1];if (Regex.IsMatch(portStr, @"^\d*$")){webBuilder.UseUrls($"http://*:{portStr}");}}else{webBuilder.UseUrls($"http://*:9200");}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/128556.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL基础-事务

目录 1.事务简介 2.事务的操作 2.1 实验需要用到的数据 2.2 完成转账操作 修改事务执行方式 手动开启事务的方式 3.事务的四大特性 4.并发事务问题 5.事务隔离级别 5.1 事务隔离级别分类 5.2 查看事务隔离级别 5.3 设置事务隔离级别 1.事务简介 事务是一组操作的集合…

【Linux】文件权限详解

🍁 博主 "开着拖拉机回家"带您 Go to New World.✨🍁 🦄 个人主页——🎐开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 🎐✨🍁 🪁🍁 希望本文能够给您带来一定的…

vue-6

一、声明式导航-导航链接 1.需求 实现导航高亮效果 如果使用a标签进行跳转的话,需要给当前跳转的导航加样式,同时要移除上一个a标签的样式,太麻烦!!! 2.解决方案 vue-router 提供了一个全局组件 router…

我的创业之路:我为什么选择 Angular 作为前端的开发框架?

我是一名后端开发人员,在上班时我的主要精力集中在搜索和推荐系统的开发和设计工作上,我比较熟悉的语言包括java、golang和python。对于前端技术中typescript、dom、webpack等流行的框架和工具也懂一些。目前,已成为一名自由职业者&#xff0…

Allegro如何用Pad Designer 设计焊盘

跟其它PCB的设计软件不一样。Allegro制作封装,第一步要先制作焊盘。 本文以圆形钻孔0.5mm,外盘0.8mm的C05D08焊盘为例一步步讲解如何制作焊盘。 1、首先打开Pad Designer,选择File→New,新建一个焊盘。 然后跳出下面的对话框,在框内输入封装名称,选择好要保存的焊盘路径…

母婴店怎么在微信小程序卖东西

随着互联网的发展,微信小程序已经成为一种新型的电商模式,它无需下载安装,使用方便,不占用手机内存,让购物变得更加简单便捷。母婴店也可以通过微信小程序来销售产品,拓宽销售渠道,增加销售额。…

HDMI简介

VGA接口 VGA传输红绿蓝模拟信号和同步信号。因传输的模拟信号,易受干扰,因此,在高分辨率下字体容易虚,信号线长的话,图像有拖尾现象。目前一些显示器已经不带VGA接口,取而代之的是HDMI和DP接口。 如下图所示…

Vs - Qt - 下拉窗口示例

下列代码定义了一个窗口&#xff0c;窗口采用竖直布局&#xff1a;一个按钮及一个label。按下按钮时候&#xff0c;窗口扩张&#xff0c;显示label控件。再次按下按钮时&#xff0c;窗口收缩&#xff0c;隐藏label控件。 详细代码如下&#xff1a; #include <QApplication&g…

微信小程序 table表格 固定表头和首列 右侧表格可以左右滚动

(一) 1.左侧一列固定不动 2.右侧表格内容可以左右滚动 3.单元格内容平均分配 4.每一行行高可以由内容撑开 通过 js 设置左侧一列行高与右侧表格内容行高保持一致 1.1 效果图 1.2 tabble.wxml <view classtable><!-- 左侧固定 --><view classtable_left_colum…

深入了解 RabbitMQ:高性能消息中间件

一、什么是消息队列 消息队列(Message Queue)是在消息的传输过程中保存消息的容器、 消息指的是两个应用间传递的数据。数据的类型有很多种形式 二、应用场景 主要有三个作用异步处理 场景说明: 用户注册后&#xff0c;需要发注册邮件和注册短信,传统的做法串行的应用解耦 场…

【juc】future并行执行并获取返回值

目录 一、截图示例二、代码示例2.1 接口示例2.2 调用示例 一、截图示例 二、代码示例 2.1 接口示例 package com.learning.controller;import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.…

stm32之freeRTOS驱动小车

该文章记录将stm32之智能小车总结移植到freeRTOS上&#xff0c;期间也遇到了好些问题&#xff0c;这里做下记录。也是对freeRTOS的一个应用实践。 一、freeRTOS工程的创建 工程是利用CubeMX进行创建的&#xff0c;挺简单的&#xff0c;有空再试下手动移植freeRTOS。 启用软件定…