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.rhkb.cn/news/151534.html

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

相关文章

C#中的数组探究与学习

目录 C#中的数组一般分为:一.数组定义:为什么要使用数组?什么是数组?C#一维数组for和foreach的区别C#多维数组C#锯齿数组初始化的意义:适用场景: C#中的数组一般分为: ​①.一维数组。 ②.多维…

分布式文件系统HDFS(林子雨慕课课程)

文章目录 3. 分布式文件系统HDFS3.1 分布式文件系统HDFS简介3.2 HDFS相关概念3.3 HDFS的体系结构3.4 HDFS的存储原理3.5 HDFS数据读写3.5.1 HDFS的读数据过程3.5.2 HDFS的写数据过程 3.6 HDFS编程实战 3. 分布式文件系统HDFS 3.1 分布式文件系统HDFS简介 HDFS就是解决海量数据…

读书笔记——C++高性能编程(一至三)

《C高性能编程》作者:费多尔.G.皮克斯 版本:2022年11月第1版 第一章.性能基础 描述了吞吐量,功耗,实时应用性能的含义。 阐述了“虽然几乎不可能提前预测最佳优化,但是可以确定某些设计决策将使后续优化变得非常困难…

C/C++ 进程间通信system V IPC对象超详细讲解(系统性学习day9)

目录 前言 一、system V IPC对象图解 1.流程图解: ​编辑 2.查看linux内核中的ipc对象: 二、消息队列 1.消息队列的原理 2.消息队列相关的API 2.1 获取或创建消息队列(msgget) 实例代码如下: 2.2 发送消息到消…

单元测试该怎么写

单元测试对于开发人员来说很熟悉,各种语言都提供了单元测试的框架,用于自动化执行单元测试并生成测试报告。它通常提供了一组API和工具,使开发人员能够编写和运行测试用例,比较预期行为和实际行为之间的差异,并准确地识…

多线程锁-synchronized字节码分析

从字节码角度分析synchronized实现 javap -c(v附加信息) ***.class 文件反编译 synchronized同步代码块 >>>实现使用的是monitorenter和monitorexit指令 synchronized普通同步方法 >>>调用指令将会检查方法的ACC_SYNCHRONIZED访问标志是否被设置&#xf…

【数据结构-二叉树 九】【树的子结构】:树的子结构

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【子结构】,使用【二叉树】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&…

不同数据类型在单片机内存中占多少字节?

文章目录 前言一、不同编译器二、C51* 指针型 三、sizeof结构体联合体 前言 在C语言中,数据类型指的是用于声明不同类型的变量或者函数的一个广泛的系统。变量的类型决定了变量存储占用的空间 一、不同编译器 类型16位编译器大小32位编译器大小64位编译器大小char…

Kafka 简介之(学习之路)

正文 一、简介 1.1 概述 Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务…

软件设计原则 1小时系列 (C++版)

文章目录 前言基本概念 Design Principles⭐单一职责原则(SRP) Single Responsibility PrincipleCode ⭐里氏替换原则(LSP) Liskov Substitution PrincipleCode ⭐开闭原则(OCP) Open Closed PrincipleCode ⭐依赖倒置原则(DIP) Dependency Inversion PrincipleCode ⭐接口隔离…

【抢先体验】开通使用 ChatGPT 语音版功能保姆级教程

大家好,我是苍何,一个土木转码的非典型程序员,也是一名技术管理者,同时也是 AI 应用的探索者。今天在视频号上看到和 ChatGPT 语音对话的视频,其声音的真实感太让人震撼了,于是也想去抢先体验一下 ChatGPT …

Centos7安装MongoDB7.xxNoSQL数据库|设置开机启动(骨灰级+保姆级)

一: mongodb下载 MongoDB 社区免费下载版 MongoDB社区下载版 [rootwww tools]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-7.1.0-rc4.tgz 二: 解压到指定目录 [rootwww tools]# mkdir -p /usr/local/mongodb [rootwww tools]# tar -zxvf mongodb-…

选择适合普通公司的项目管理软件

不管是打工人还是学生党都适合使用Zoho Projects项目管理软件。利用项目概览功能,将整体项目尽收眼底,作为项目管理者,项目日程、进度都可见,Zoho Projects项目管理APP助推项目每一环节的进展,更便于管理者设计项目的下…

ThingsBoard如何自定义tcp-transport

1、概述 很久没有更新了,一直忙于其他的事情,最近去搞了一个在ThingsBoard中自定义一个tcp-transport,用于连接使用tcp长连接的设备,目前使用tcp和mqtt协议连接服务端的设备还是很多,ThingsBoard的PE版提供了Integration是可以实现tcp的接入,但是CE版是没有提供接入tcp长…

【MySQL】基本查询(二)

文章目录 一. 结果排序二. 筛选分页结果三. Update四. Delete五. 截断表六. 插入查询结果结束语 操作如下表 //创建表结构 mysql> create table exam_result(-> id int unsigned primary key auto_increment,-> name varchar(20) not null comment 同学姓名,-> chi…

IO 之 操作properties属性文件

propreties文件: properties文件是一种用于存储配置信息的文本文件,通常以“.properties”为文件扩展名。它是一种简单的键值对格式,用于保存应用程序的配置参数。 在properties文件中,每一行都包含一个键值对,键和值…

HTTPS工作过程,国家为什么让http为什么要换成https,Tomcat在MAC M1电脑如何安装,Tomcat的详细介绍

目录 引言 一、HTTPS工作过程 二、Tomcat 在访达中找到下载好的Tomcat文件夹(这个要求按顺序) zsh: permission denied TOMCAT的各部分含义: 引言 在密码中一般是:明文密钥->密文(加密) &#xff…

Spring源码解析——IOC属性填充

正文 doCreateBean() 主要用于完成 bean 的创建和初始化工作,我们可以将其分为四个过程: 最全面的Java面试网站 createBeanInstance() 实例化 beanpopulateBean() 属性填充循环依赖的处理initializeBean() 初始化 bean 第一个过程实例化 bean在前面一篇…

复旦大学EMBA:揭秘科创企业,领略未来战略!

智能制造,国之重器。作为制造强国建设的主攻方向,智能制造的发展水平关系到我国未来制造业在全球的地位与影响力。发展智能制造,是加快建设现代化产业体系的重要手段,提升供给体系适配性的有力抓手,也是建设数字中国的…

【C++设计模式之状态模式:行为型】分析及示例

简介 状态模式(State Pattern)是一种行为型设计模式,它允许对象在内部状态改变时改变其行为,看起来就像是改变了其类。状态模式将对象的状态封装成不同的类,并使得对象在不同状态下有不同的行为。 描述 状态模式通过…