ASP.NET Core - Kestrel - 端口共享 - 替代方法

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 支持(仅在付费/商业版本中提供)。

谢谢!

1个回答

4

我知道这个问题已经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"。

也许这对某些人会有用。


“urlPrefix”参数在哪里出错了?“urlPrefix”不存在。 - Alok
那么解决方案就是使用 Http.Sys 吗?我不确定原帖作者是否意识到了这个选项。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接