首页 > 解决方案 > 了解asp.net core中创建Host的主要目的

问题描述

在 IIS 中,我们需要在 w3wp 工作进程中托管应用程序的 ASP.NET Core 模块。
考虑到 Kestrel 也需要同样的方法,除了配置日志记录、DI 和中间件管道之外,其根本目的HostBuilder完全相同,即在 Kestrel 中托管应用程序,就像在 IIS 中托管应用程序一样 ASP.NET Core 模块。

我错了吗?

标签: 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 或其他框架,取决于您可能正在开发的特定应用程序。


推荐阅读