6

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

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

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

使用 Kestrel 时不支持 Asp.Net Core 端口共享,除了使用 Nginx、Appache 等反向代理(“重定向”到不同端口)之外,还有其他选择吗?

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

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

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

4

1 回答 1

3

我知道这是 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()

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

也许它对某人有用

于 2020-12-16T15:45:55.943 回答