首页 > 解决方案 > 在 Kestrel 实例之间共享服务

问题描述

是否有一种机制可以共享在单个进程中运行的 2 个 Kestrel 服务器之间注册的服务依赖项?

我真的想在一个端口上隔离一些后端支持端点,而主应用程序在另一个端口上运行。

据我所知.UseUrls("http://*:80", "http://*:8080"),会为同一个 Kestrel 实例和 HTTP 管道公开 2 个端口,这并不是我想要的。

给定这样的结构

Kestrel on :80
   /api/... - normal api 
   /ping - liveness checks
Kestrel on :8080
   /health - health checks
   /metrics - metrics

我知道我可以有一个共享Configure(IServiceCollection serviceCollection)方法来注册公共部分,但是IServiceCollection会产生一个完全独立的IServiceProvider.

我想为两台服务器注册服务以从同一个根使用IServiceProvider但具有不同的 HTTP 管道/端点配置。

这可能吗?

标签: asp.net-coreasp.net-core-3.1kestrel

解决方案


推荐阅读