Asp.Net Core – Kestrel – 端口共享 – 替代方案

ren*_*e_r 5 reverse-proxy tcpportsharing kestrel-http-server asp.net-core

目前我们正在从 .Net Framework (4.7) 迁移到 .Net Core / Asp.Net Core。

我们有一些使用 WebAPI 并侦听同一端口 (443) 的微服务。

我们有一个单页应用程序(由几个模块(逻辑单元)组成),所有模块都使用相同的端口(443)与我们的微服务进行通信。

使用 Kestrel 时不支持 Asp.Net Core 端口共享,是否还有其他选择,然后使用反向代理,如 Nginx、Appache(“重定向”到不同端口)?

我们不能使用 IIS 作为反向代理,因为我们也在使用 IIS 目前不支持的 gRPC。

如果反向代理解决方案是正确的方法(我个人认为是,因为MS-doku,你能推荐一个反向代理,我们使用的是 Windows 并且需要对 spnego(Kerberos、NTLM v1、v2)的支持,至少代理应该能够将 spnego 转发到我们的 IIS,我们可能会将其用于其他应用程序和单点登录解决方案。

Nginx 看起来不错,但没有内置对 spnego 的支持(仅在付费/商业版本中)。

小智 5

我知道这是 7 个月前的问题,但如果使用 HTTPListener 是可以接受的,那么我对此问题的解决方案如下:

Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseStartup<Startup>();
    })
    .ConfigureWebHost(config =>
    {
            //We are sharing port with .net HTTPListener object with streaming service on SF cluster so we need to use old HTTP.sys and we can not use new Kestrel
        config.UseHttpSys(options =>
        {
            options.UrlPrefixes.Add(urlPrefix);
        });
    })
    .Build()
Run Code Online (Sandbox Code Playgroud)

StatelessService 中的一项服务使用前缀“https://+:[portNr]”,而 asp.net Core 主机使用“https://+:[portNr]/ws”

也许这对某人有用