浅谈ASP.NET Core的几种托管方式

网络安全 2025-04-16 13:08www.168986.cn网络安全知识

本文将为你简要介绍ASP.NET Core的几种托管方式,主要聚焦于Kestrel以及IIS托管方式,对于其他托管方式也会有所提及。通过示例代码让读者更好地理解托管方式在实际操作中的应用。

一、Kestrel托管方式

Kestrel是一个跨平台的、适用于ASP.NET Core的Web服务器,是ASP.NET Core的默认服务器。它可以单独使用,也可以与反向代理服务器(如IIS、Nginx或Apache)结合使用。反向代理服务器负责接收来自网络的HTTP请求,并将这些请求转发给Kestrel。

使用Kestrel托管ASP.NET Core应用十分简便,只需要创建一个新的ASP.NET Core Web应用,然后在项目中使用Kestrel即可。在此模式下,你可以直接运行ASP.NET Core应用,并通过修改代码来查看运行时的进程信息。例如,你可以修改Pages/Index.cshtml文件,添加代码来显示当前进程名称。

二、IIS托管方式

进程内托管模型是将ASP.NET Core应用直接嵌入到IIS工作进程中(w3wp.exe)。IIS HTTP服务器(IISHttpServer)负责处理请求。这种模型是默认的托管方式。

进程外托管模型则是将Web请求转发到运行Kestrel服务器的后端ASP.NET Core应用。在这种模型中,ASP.NET Core模块负责将IIS接收到的请求转发给Kestrel处理。需要注意的是,这种模型仅适用于Kestrel,无法与HTTP.sys一起工作。

总结

部署ASP.NET Core应用:进程内外托管与HTTP.sys的选择

在ASP.NET Core的世界里,部署应用并选择合适的托管方式是一项重要的任务。本文将介绍如何部署应用并了解进程内外托管及HTTP.sys的特点及使用方式。

我们来了解一下基本的部署流程。将代码通过命令行发布到“publish”文件夹,这一步骤对于所有部署流程都是一样的。代码发布后,我们可以将publish文件夹中的文件托管到IIS中。为了成功托管ASP.NET Core网站,需要在IIS中安装一些必要的组件并安装IIS HTTP服务器。安装完成后,执行特定的命令来启动IIS服务。之后,在IIS中新建网站,并将根目录指向刚刚发布的publish文件夹。浏览网站可以看到成果,进程名称为w3wp,这是默认的进程内托管模式。

接下来,我们一下进程外托管模式。这种模式使用Kestrel服务器而非IIS HTTP服务器。为了实现进程外托管,需要在项目文件中设置特定的属性。修改后的项目文件会将AspNetCoreHostingModel属性的值设置为OutOfProcess。修改完成后,重新发布并部署到IIS。此时的进程名称会显示为“dot”,表示应用正在以进程外托管模式运行。这种模式下,应用的性能可能会因使用Kestrel服务器而有所不同。

除了进程内外托管模式外,HTTP.sys也是一个重要的选项。HTTP.sys是ASP.NET Core应用在Windows上的另一种运行方式,在某些场景下可以作为Kestrel的替代选项。为了获得最佳性能,通常推荐使用Kestrel。值得注意的是,HTTP.sys只能在Windows上运行,并且不能与ASP.NET Core模块同时使用。当不想使用IIS或者需要用到Kestrel不具备的功能时,可以考虑使用HTTP.sys。使用HTTP.sys部署应用的具体步骤与选择进程内外托管模式的步骤类似,但需要注意的是,由于HTTP.sys的特性限制,它并不能与ASP.NET Core模块一同使用。

选择合适的部署方式和托管模式取决于应用的特定需求和运行环境。进程内外托管模式和HTTP.sys各有优势,需要根据实际情况进行选择和使用。希望本文能够帮助您理解并选择合适的部署策略,让您的ASP.NET Core应用发挥出最佳性能。HTTP.sys:Windows下的强大HTTP服务器

在Windows操作系统中,HTTP.sys是一个强大的工具,支持多种功能,包括Windows身份验证、端口共享、SNI HTTPS、基于TLS的HTTP/2(Windows 10及更高版本)、直接文件传输、响应缓存以及WebSocket(Windows 8及更高版本)。它是一个内置的HTTP服务器,专门用于在Windows环境下处理HTTP请求。与之类似的,Kestrel也是一个跨平台的服务器,但它与HTTP.sys在功能上略有不同。Kestrel适用于多种平台,而HTTP.sys仅限于Windows系统。它们两者都是ASP.NET Core中的服务器,类似于SpringBoot中的内嵌服务器。

下面是一个简单的实例,展示如何在ASP.NET Core应用中使用HTTP.sys。修改后的Program.cs代码如下:

创建一个HostBuilder并配置默认的WebHost:

允许同步IO操作,配置身份验证方案为无,允许匿名访问,设置最大连接数和最大请求体大小,并添加URL前缀。然后使用HttpSys作为Web服务器,并使用Startup类启动应用。通过命令行运行应用。此时应用将以HTTP.sys方式托管运行。值得注意的是,这种方式不能在IIS中托管运行,如果将发布的代码放到IIS中会报错。这是因为IIS和HTTP.sys有不同的托管方式和工作原理。

尽管我们可以直接使用ASP.NET Core内置的服务器(如Kestrel或HTTP.sys)来提供HTTP服务,但在生产环境中,我们通常会使用像Nginx或Apache这样的常用WEB服务器作为反向代理。这样可以提高系统的性能和稳定性。在IIS中托管ASP.NET Core应用时,我们可以使用ASP.NET Core模块来简化托管过程。这种模式类似于反向代理模式。当需要使用某些Kestrel不支持的功能时,我们可以考虑使用HTTP.sys。无论是使用Kestrel还是HTTP.sys,它们都是ASP.NET Core的重要组成部分,能够帮助我们轻松地在Windows环境下提供HTTP服务。希望本文的内容能对大家的学习有所帮助,也希望大家多多支持狼蚁SEO。如果您有任何疑问或需要进一步的解释,请随时与我们联系。我们将竭诚为您服务!请确保您的代码和数据安全,合理使用这些技术来创建高质量的应用程序。

上一篇:JS实现带动画的回到顶部效果 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by