ASP.NET Core 2.2 基础知识(十三)【服务器】

【ASP.NET CORE 2.0】在CentOS上部署ASP.NET CORE 2.0程序【超详细】 突然来的需求,让以前ASP.NET写的系统要部署到Linux上,所以研究了一下。1. 安装CentOS网上一搜一大把,我是在虚拟机上安装的。可以参考2. 安装.NET CORE SDK for CentOS 72.1 添加.NET相关为了安装.NET,需要注册微软签名密钥和添加微软相关的支持。这个操作每台机器只能做一次。 打开命令行,输出以下命令:sudo rpm --import https:/ 阅读详情

ASP.NET Core 中的 Web 服务器实现

ASP.NET Core 应用与进程内 HTTP 服务器实现一起运行。 该服务器实现侦听 HTTP 请求,并以组成 HttpContext 的请求功能集形式,将它们呈现给应用。

Windows
ASP.NET Core 随附以下组件:

  • Kestrel 服务器是默认跨平台 HTTP 服务器实现。
  • IIS HTTP 服务器是 IIS 的进程内服务器。
  • HTTP.sys 服务器是仅用于 Windows 的 HTTP 服务器,它基于 HTTP.sys 核心驱动程序和 HTTP 服务器 API。

使用 IIS 或 IIS Express 时,应用会在以下其中一个进程中运行:

  • 在与 IIS 工作进程(进程内托管模型)和 IIS HTTP 服务器相同的进程中。 “进程内”建议的配置。
  • 在独立于 IIS 工作进程(进程外托管模型)和 Kestrel 服务器的进程中。

ASP.NET Core 模块是本机 IIS 模块,用于处理 IIS 和进程内 IIS HTTP 服务器或 Kestrel 之间的本机 IIS 请求。 有关更多信息,请参见ASP.NET Core 模块。

托管模型

进程内托管模型

使用进程内托管,ASP.NET Core 在与其 IIS 工作进程相同的进程中运行。 进程内承载相较进程外承载提供更优的性能,因为请求并不通过环回适配器进行代理,环回适配器是一个网络接口,用于将传出的网络流量返回给同一计算机。 IIS 使用 Windows 进程激活服务 (WAS) 处理进程管理。

ASP.NET Core 模块:

  • 执行应用初始化。
    • 加载 CoreCLR。
    • 调用 Program.Main。
  • 处理 IIS 本机请求的生存期。

定目标到 .NET Framework 的 ASP.NET Core 应用不支持进程内托管模型。

下图说明了 IIS、ASP.NET Core 模块和进程内托管的应用之间的关系:
在这里插入图片描述

请求从 Web 到达内核模式 HTTP.sys 驱动程序。 驱动程序将本机请求路由到网站的配置端口上的 IIS,通常为 80 (HTTP) 或 443 (HTTPS)。 该模块接收本机请求,并将它传递给 IIS HTTP 服务器 (IISHttpServer)。 IIS HTTP 服务器是将请求从本机转换为托管的 IIS 进程内服务器实现。

IIS HTTP 服务器处理请求之后,请求会被推送到 ASP.NET Core 中间件管道中。 中间件管道处理该请求并将其作为 HttpContext 实例传递给应用的逻辑。 应用的响应传递回 IIS,IIS 将响应推送回发起请求的客户端。

进程内托管选择使用现有应用,但 dotnet new 模板默认使用所有 IIS 和 IIS Express 方案的进程内托管模型。

进程外托管模型

由于 ASP.NET Core 应用在独立于 IIS 工作进程的进程中运行,因此该模块会处理进程管理。 该模块在第一个请求到达时启动 ASP.NET Core 应用的进程,并在应用关闭或崩溃时重新启动该应用。 这基本上与在 Windows 进程激活服务 (WAS) 托管的进程内运行的应用中出现的行为相同。

下图说明了 IIS、ASP.NET Core 模块和进程外托管的应用之间的关系:
在这里插入图片描述
请求从 Web 到达内核模式 HTTP.sys 驱动程序。 驱动程序将请求路由到网站的配置端口上的 IIS,通常为 80 (HTTP) 或 443 (HTTPS)。 该模块将该请求转发到应用的随机端口(非端口 80/443)上的 Kestrel。

该模块在启动时通过环境变量指定端口,IIS 集成中间件将服务器配置为侦听 http://localhost:{PORT}。 执行其他检查,拒绝不是来自该模块的请求。 该模块不支持 HTTPS 转发,因此即使请求由 IIS 通过 HTTPS 接收,它们还是通过 HTTP 转发。

Kestrel 从模块获取请求后,请求会被推送到 ASP.NET Core 中间件管道中。 中间件管道处理该请求并将其作为 HttpContext 实例传递给应用的逻辑。 IIS 集成添加的中间件会将方案、远程 IP 和 pathbase 更新到帐户以将请求转发到 Kestrel。 应用的响应传递回 IIS,IIS 将响应推送回发起请求的 HTTP 客户端。

有关 IIS 和 ASP.NET Core 模块的配置指南,请参阅以下主题:

  • 使用 IIS 在 Windows 上托管 ASP.NET Core
  • ASP.NET Core 模块

Kestrel

Kestrel 是 ASP.NET Core 项目模板中包括的默认 Web 服务器。

Kestrel 的使用方式如下:

  • 本身作为边缘服务器,处理直接来自网络(包括 Internet)的请求。

Kestrel 直接与 Internet 通信,不使用反向代理服务器

Kestrel 通过反向代理服务器(如 IIS、Nginx 或 Apache)间接与 Internet 进行通信
使用或不使用反向代理服务器对 ASP.NET Core 2.1 或更高版本的应用来说都是受支持的托管配置。

有关 Kestrel 配置指南和何时在反向代理配置中使用 Kestrel 的信息,请参阅 ASP.NET Core 中的 Kestrel Web 服务器实现。

Nginx 与 Kestrel

若要了解如何在 Linux 上使用 Nginx 作为 Kestrel 的反向代理服务器,请参阅 使用 Nginx 在 Linux 上托管 ASP.NET Core。

Apache 与 Kestrel

若要了解如何在 Linux 上使用 Apache 作为 Kestrel 的反向代理服务器,请参阅 使用 Apache 在 Linux 上托管 ASP.NET Core。

IIS HTTP 服务器

IIS HTTP 服务器是 IIS 的进程内服务器且为进程内部署所必需。 ASP.NET Core 模块用于处理 IIS 和 IIS HTTP 服务器之间的本机 IIS 请求。 有关更多信息,请参见ASP.NET Core 模块。

HTTP.sys

如果 ASP.NET Core 应用在 Windows 上运行,则 HTTP.sys 是 Kestrel 的替代选项。 为了获得最佳性能,通常建议使用 Kestrel。 在应用向 Internet 公开且所需功能受 HTTP.sys(而不是 Kestrel)支持的方案中,可以使用 HTTP.sys。 有关更多信息,请参见ASP.NET Core 中的 HTTP.sys Web 服务器实现。
HTTP.sys 直接与 Internet 进行通信

对于仅向内部网络公开的应用,HTTP.sys 同样适用。
HTTP.sys 直接与内部网络进行通信
有关 HTTP.sys 的配置指南,请参阅 ASP.NET Core 中的 HTTP.sys Web 服务器实现。

ASP.NET Core 服务器基础结构

Startup.Configure 方法中提供的 IApplicationBuilder 公开了类型 IFeatureCollection 的 ServerFeatures属性。 Kestrel 和 HTTP.sys 各自仅公开单个功能,即 IServerAddressesFeature,但是不同的服务器实现可能公开其他功能。

IServerAddressesFeature 可用于查找服务器实现在运行时绑定的端口。

自定义服务器

如果内置服务器无法满足应用需求,可以创建一个自定义服务器实现。 .NET 的开放 Web 接口 (OWIN) 指南 演示了如何编写基于 Nowin 的 IServer实现。 只有应用使用的功能接口需要实现,但至少必须支持IHttpRequestFeature 和 IHttpResponseFeature。

服务器启动

集成开发环境 (IDE) 或编辑器启动以下应用时,会启动服务器:

从项目文件夹中的命令提示符启动应用时,dotnet run 会启动该应用和服务器(仅 Kestrel 和 HTTP.sys)。 可通过 -c|--configuration 选项指定此配置,该选项设置为 Debug(默认值)或 Release。 如果启动配置文件位于 launchSettings.json 文件中,请使用 --launch-profile <NAME> 选项设置启动配置文件(例如 Development 或 Production)。 有关详细信息,请参阅 dotnet run 和 .NET Core 分发打包。

HTTP/2 支持

以下部署方案中的 ASP.NET Core 支持 HTTP/2:

  • Kestrel
    • 操作系统
      • Windows Server 2016/Windows 10 或更高版本†
      • 具有 OpenSSL 1.0.2 或更高版本的 Linux(例如,Ubuntu 16.04 或更高版本)
      • macOS 的未来版本将支持 HTTP/2。
    • 目标框架:.NET Core 2.2 或更高版本
  • HTTP.sys
    • Windows Server 2016/Windows 10 或更高版本
    • 目标框架:不适用于 HTTP.sys 部署。
  • IIS(进程内)
    • Windows Server 2016/Windows 10 或更高版本;IIS 10 或更高版本
    • 目标框架:.NET Core 2.2 或更高版本
  • IIS(进程外)
    • Windows Server 2016/Windows 10 或更高版本;IIS 10 或更高版本
    • 面向公众的边缘服务器连接使用 HTTP/2,但与 Kestrel 的反向代理连接使用 HTTP/1.1。
    • 目标框架:不适用于 IIS 进程外部署。

Kestrel 在 Windows Server 2012 R2 和 Windows 8.1 上对 HTTP/2 的支持有限。 支持受限是因为可在这些操作系统上使用的受支持 TLS 密码套件列表有限。可能需要使用椭圆曲线数字签名算法 (ECDSA) 生成的证书来保护 TLS 连接。

HTTP/2 连接必须使用应用程序层协议协商 (ALPN) 和 TLS 1.2 或更高版本。 有关详细信息,请参阅与服务器部署方案相关的主题。

ASP.NET Core实现OAuth2.0的AuthorizationCode模式 ASP.NET Core实现OAuth2的AuthorizationCode模式 授权服务器 Program.cs --> Main方法中:需要调用UseUrls设置IdentityServer4授权服务的IP地址 1 var host = new WebHostBuilder() 2 .UseKestrel() 3 阅读详情

相关推荐

.NET Core 2.2 官方教程(中文版)

ASP.NET Core 是一个跨平台的高性能开源框架,用于生成基于云且连接 Internet 的新式应用程序。 使用 ASP.NET Core,您可以: 建置 Web 应用程式和服务、IoT 应用和移动后端。 在 Windows、macOS 和 Linux 上使用喜爱的开发工具。 部署到云或本地。 在 .NET Core 或 .NET Framework 上运行。

《ASP.NET Core 6框架揭秘》实例演示[27]:ASP.NET Core 6 Minimal API的模拟实现

Minimal API仅仅是在基于IHost/IHostBuilder的服务承载系统上作了小小的封装而已,它利用WebApplication和WebApplicationBuilder这两个类型提供了更加简洁的API,同时提供了与现有API的兼容。[本文节选《ASP.NET Core 6框架揭秘》第17章]一、基础模型二、WebApplication三、WebApplication的构建 ...

dotNET跨平台 576

net core 框架 三层框架 运行正常 可部署服务器

.net core 框架,基于.net core 3.0 开发环境 Visual Studio 2019, 数据库操作采用 Dapper,包含model层自动生成代码。项目运行正常,可部署到服 务器

ASP.NET Core 中你必须知道的设置URLs的8种方法

如果在.NET8中没有额外的配置,ASP.NET Core App监听的URL为http://localhost:5000,在这篇文章中我将展示8种方式来改变这个URL,这是我3年前写的一个帖子ASP.NET Core App设置URLs的5种方法(https://andrewlock.net/5-ways-to-set-the-urls-for-an-aspnetcore-app/),这篇文章将...

dotNET跨平台 1712

ASP.NET Core 2.2简介

教程:ASP.NET Core 入门 本教程演示如何使用 .NET Core 命令行接口创建 ASP.NET Core Web 应用。 你将了解如何: 创建 Web 应用项目。 启用本地 HTTPS。 运行应用。 编辑 Razor 页面。 最后,在本地计算机上运行工作 Web 应用。 Web 应用主页 系统必备 .NET Core 2.2 SDK 创建 Web 应用项目 打开命令行界面,然后输入以下命令: console 复制 dotnet new webapp -o aspnetcoreapp 启用本地 HTTPS 信任 HTTPS 开发证书: Windows macOS Linux console 复制 dotnet dev-certs https --trust 以上命令会显示以下对话: 安全警告对话 如果你同意信任开发证书,请选择“是”。 运行应用 运行以下命令: console 复制 cd aspnetcoreapp dotnet run 浏览到 https://localhost:5001。 单击“接受”,接受隐私和 cookie 政策。 此应用不保留个人信息。 等等

吉林大学软件工程章节测验 第九章 答案+解析

4.【判断题】估算软件规模有代码行技术和功能点技术两种方法,其中代码行方法估计实现一个功能所需要的源程序行数,其不依赖项目所使用的开发语言,并且具有较好的直观性。3.【单选题】软件项目估算时,若计划人员对每个功能分别按最佳的、可能的、悲观的三种情况给出功能点估计值,记作a, m, b,则估算的期望值E的公式为( )。8.【判断题】在工程网络图中,如果在由起始事件至终止事件所构成的一条路径上,所有事件的最早时刻都和最迟时刻都相同,那么这条路径就是关键路径。4.【单选题】配置管理贯穿软件开发的整个过程。

m0_51459931的博客 1430

ASP.NET Core 中文文档 第三章 原理(14)服务器

原文:Servers 作者:Steve Smith 翻译:谢炀(Kiler) 校对:许登洋(Seay)、姚阿勇(Dr.Yao) ASP.NET Core 已完全从承载应用程序的 Web 服务器环境中分离。ASP.NET Core 可以承载于 IIS 和 IIS Express ,以及使用 Kestrel 和 WebListener HTTP Server 的自承载环境中。此外,开发人员和第三方软件...

weixin_33896069的博客 182

A-Level CS 计算机科学 考试知识点——考试介绍&第1章

前言:该系列文章是本人在给学生辅导本课程的过程中结合英文教材所总结的,该系列共分为30章,主要介绍了考试的核心知识点。若需要A-Level CS 计算机科学考试辅导也可以私信我。 目录 关于A-Level CS 计算机科学考试 考试简介 考试内容 考试时间 评分情况 第1章 信息表示 本章学习内容 1.01 数字系统 1.02 数字的内部编码 整数编码(Coding for integers) 二进制编码的十进制(Binary coded decimal——BCD) 1.03.

王俊的博客 6457

什么是Asp.net core web

1:什么是.Net Core   ASP.NET Core 是一个开源的、跨平台的 .NET 实现。而 .NET Framework 是基于 Windows 的 .NET 实现,Mono 是.NET Framework 的一个开源、跨平台的实现。   ASP.NET Core分为两大块:1).NET Core Framework,2).NET Core Runtime。 2..Net Co...

babeyuu的博客 1703

ORCAD 层次化原理图使用TCL获取位号的方法

orcad tcl 获取occurrence位号的方法。

m0_46675718的博客 1128

Ventoy引导自定义菜单配置详解:手把手教你用ventoy_grub.cfg启动硬盘里的Manjaro

本文详细解析了Ventoy引导自定义菜单配置方法,重点介绍如何通过ventoy_grub.cfg文件启动硬盘中的Manjaro系统。从Ventoy与GRUB2的协作原理到具体配置步骤,包括分区布局设计、关键参数解析及常见问题解决方案,帮助用户实现多系统引导的灵活管理。

weixin_28738165的博客 299

asp.net core 内置 web服务器

asp.net core 内置 web服务器 Kestrel 是一个跨平台 Web 服务器,属于 进程外托管模型,可以独立处理 http请求,效率更高。但是为了 运维操作,一般使用 反向代理 ​IIS、Nginx 或 Apache 结合使用。用于获得 Nginx 高性能的 Unix 套接字。用于启用 WebSocket 的不透明升级。HTTP/2(在 macOS+ 上除外)

q8812345qaz的博客 1039

FMCW雷达基本原理(通俗易懂)篇2

FMCW雷达(Frequency Modulated Continuous Wave Radar)是一种使用频率调制连续波的雷达系统。它使用一个发射器发射一个连续波,但是这个连续波的频率会在一定的范围内不断变化。当这个连续波遇到一个目标物体并被反射回来时,接收器会检测到这个反射波的频率变化,并计算出目标物体的距离和速度等信息。FMCW雷达的原理可以理解为:1.发射器发射一个连续波,这个波的频率会从一个固定的起始频率开始,逐渐变化至一个固定的终止频率。

研二小学鸡的博客 7688

什么是Asp.net Core?和 .net core有什么区别?

什么是Asp.Net core 我相信很多C# Developer已经对于.net core不算陌生了,就算没有正式使用相信也应该有所了解。微软在推出来.net core的同时为了方便一些原有的项目可以方便迁移,同时推出了Asp.net core。那么.net core和Asp.net core是不是同一个东西呢?如果不是又有什么区别呢? 下面我们分别说明一下,首先Asp.net core和.net core肯定不是同一个东西(废话,如果是同一个东西还写这么多干啥!)。 Asp.net core其实就是仍然

极客神殿 3万+

CST-Python(Pycharm如何与CST联合仿真,获取S参数)

我们想使用Python与CST联合仿真,其实是不需要自己下载Python的,因为CST在下载的时候就自带了Python3.6,我们只需要找到并将软件的环境设置到相应位置,即可联合仿真。(我的保存路径为D:\Program Files (x86)\CST Studio Suite 2020,在寻找时可以将前面切换成自己的保存路径,后面不需要修改)在CST帮助文档(打开CST软件,按F11即可直接访问帮助文档)里面,进行如下操作,便可以看到CST适配的Python版本为Python3.6!

weixin_52696285的博客 5648

linux 基于debian/ubuntu AB系统适配(二)-updateEngine移植

其实A/B系统的原理很简单,大部分的工作都集中在uboot上,rootfs只是起到一个辅助的作用,但这个作用也就必不可少的。你会发现在这个其中并没有kernel的参与。

badbayyj的博客 1033

如何 ASP.NET Core 中使用 WebSocket

摘要:本文详细介绍了在ASP.NET Core中实现WebSocket通讯的完整流程。文章首先阐述了WebSocket在实时应用中的优势,如聊天室、金融交易等场景。然后分三个阶段演示实现过程:1)服务器端配置WebSocket中间件和路由;2)客户端创建WebSocket连接;3)测试多个客户端连接。最后通过构建聊天室应用演示了多用户消息广播功能,包括用户加入/离开通知等特性。教程提供了完整的代码示例,帮助开发者快速掌握ASP.NET Core中WebSocket的实现方法。

csdn_aspnet的专栏,请点击博客主页右上角三个点中的私信联系 1665

PD详解—第一章—Type-C连接

Type-C连接 今天大师匈下班比较早,再给大家侃一侃PD,希望大家支持。 PD和Type-c的关系 首先讲一下PD快充的实现步骤,本文主要是Source端(电源),Sink端的差不多也一样,只是策略不同而已。 TypeC连接-->广播电源能力Source capbility(数据交互)->打电压电流->等待其他指令。 所以typec连接是第一步,很多人会从字面意思理解typec连接,这不就是把线给插上去就好了吗? 不知道有没有优秀的同学想到正确答案; 正确答案:typec连接的本质是为

大师匈的博客 1万+

ASP.Net Core Web Api在Windows服务器上部署

一、在Windows服务器上搭建环境 1.1、下载.NET Core Runtime .NET Core Runtime下载

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【asp.net core 系列】 1 带你了解一下asp.net core

0. 前言 这是一个新的系列,名字是《ASP.NET Core 入门到实战》。这个系列主讲ASP.NET Core MVC,辅助一些前端的基础知识(能用来实现我们需要的即可,并非主讲)。同时这个系列也会在后续介绍ASP.NET Core 平台的其它类型的项目,并带领大家以各个类型的项目为主要架构开发一个网站或者网络服务中心。 下图是官网关于Asp.net Core支持的项目的介绍 1. ASP.NET Core 介绍 这一节我将为大家介绍一下 asp.net core的发展历程。 最早,微软为了替代CGI

菜鸡成长日记 1535

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ASP.NET CORE 简介

<h1 id="aspnet-core-简介">ASP.NET CORE 简介</h1> <p>ASP.NET Core 是一个跨平台的高性能开源框架,用于生成启用云且连接 Internet 的新式应

yuyue59451222222的博客 2362

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C#、ASP.NET、ASP.NET MVC、ASP.NET web form、asp.net core mvc的区别。哦我的上帝啊!这可真糟糕

微软的命名很糟糕。技术上有两个框架:ASP.NET和ASP.NET Core,它们分别基于.NET Framework和.NET Core构建。 当Microsoft首次尝试创建一个遵循MVC模式的“现代”Web应用程序平台时,它将这个新平台称为“ASP.NET MVC”,以区别于以前的ASP.NET应用程序(主要是Web Forms)。然后,为了更加混淆事情,他们后来添加了“ASP.NET We...

菜鸟变凤凰 2450

简述关于ASP.NET MVC与.NET CORE 的区别

简述关于ASP.NET MVC与.NET CORE的区别 1、关于ASP.NET 关于MVC 刚开始接触这个技术的时候我经常不理解他们的名字,我相信许多学ASP.NET开发人员开始接触MVC应该也和我一样产生很多为什么,也会误认为认为MVC与ASP.NET完全没有关系,是一个全新的Web开发,深入学习后我才知道事实上ASP.NET是创建WEB应用的框架而MVC是能够用更好的方法来组织并管理代码的一...

吴朋个人博客 1万+

跟着老桂学ASP.NET Core 2.0

.net core作为微软开发技术中跨平台的利器,2.0的发布已经有一段时间了,asp.net core是新一代微软的BS开发框架,同时兼容.net core和.net framework,它的出现,使基于微软体系的BS开发迎来新的契机,开源,跨平台,Docker部署,适合测试(DI),模块低偶合等一系列新举措让我们对它爱不释手。 本人从.net core的beta就可以跟踪学习,在工作和项目中

dotNET跨平台 2121

Asp.net core Kestrel服务器详解

Kestrel 是 ASP.NET Core 的默认、高性能、跨平台 Web 服务器,负责监听 HTTP 请求并将其传递给应用程序。在生产环境中,应将其置于反向代理(如 Nginx、IIS)之后,以获得更好的安全性、可扩展性和运维能力。它是 ASP.NET Core 实现“一次编写,到处运行”理念的关键组件之一。Kestrel Web 服务器实现。

qq_44967213的博客 1166

ASP.NET Core 2.2 基础知识(十三) WebAPI 概述

ASP.NET Core 2.2 基础知识(十三) WebAPI 概述 原文:ASP.NET Core 2.2 基础知识(十三) WebAPI 概述我们先创建一个 WebAPI 项目,看看官方给的模板到底有哪些东西 官方给出的模板: [Route("api/[controller]")] [ApiContro...

weixin_30639719的博客 174
上一篇: ASP.NET Core 基础知识(十二)【Host之通用主机】
下一篇: ASP.NET Core基础知识(十四)【发出 HTTP 请求】
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值