asp.net-core - 了解asp.net core中创建Host的主要目的
问题描述
在 IIS 中,我们需要在 w3wp 工作进程中托管应用程序的 ASP.NET Core 模块。
考虑到 Kestrel 也需要同样的方法,除了配置日志记录、DI 和中间件管道之外,其根本目的HostBuilder
完全相同,即在 Kestrel 中托管应用程序,就像在 IIS 中托管应用程序一样 ASP.NET Core 模块。
我错了吗?
解决方案
你说的有点对。您需要记住:
- 您不必使用IIS。您还需要一些东西来将来自 IIS 的请求获取到您的应用程序中,因为 IIS 中的模块仅用于使 IIS 了解 ASP.NET Core 管道,因为 IIS 仅适用于本机的 ASP.NET(框架)。那么,在 IIS 和 ASP.NET Core 中都需要额外的设置(以
UseIISIntegration
. - ASP.NET Core 需要配置中间件管道、服务等。
- 像这样模块化背后的想法是,您可以轻松删除
.UseIISIntegration()
并仅在 Kestrel 上托管,甚至在 nginx 和 httpd 等其他服务器后面的 Kestrel 上托管。 - 主机不知道 Kestrel,只
Host.UseDefaultBuilder
(在内部调用UseKestrel()
)注入 Kestrel。
基本上,主机是应用程序的中心配置。您是否使用 Kestrel、IIS、http.sys 或其他框架,取决于您可能正在开发的特定应用程序。
推荐阅读
- typescript - 如何为类声明默认函数?
- python - 如何从我的 python 脚本捕获终端输出到文本文件
- google-apps-script - Google Apps 脚本:获取“分配”到 google 文档和评论的用户列表
- openshift - 在修补部署配置时动态传递参数
- oracle - Apex 18.1 如何创建多列 LOV 以分别返回多列中的多个值
- sql - SQL 查询,其中包含员工加入每个经理的顺序
- sqlite - 如何使用 LINQ 查询获取以大写、小写或组合保存的某些记录的计数
- reactjs - Mousetrap.bindGlobal 不是一个函数
- android - nativescript 中的多项活动
- python - Finding the logits with respect to labels Tensorflow Python