0

我会先问我的问题,然后我会解释原因。

如何指定我的 Kestrel 服务器不应该监听 .Net Core Module 告诉它的端口?

我有这个用 .Net Core 编写的 web api 应用程序,它使用了一些微服务架构。最终的 Web 应用程序通过网络公开了一些 API 供客户端使用,但它必须在内部公开一些特殊的 API 以供微服务使用。

现在我使用下面的代码在两个不同的端口上启动两个 Kestrel 服务并指定两个不同的端口:

public static IWebHost BuildWebHost(string[] args, ServerSettings settings)
{
    return WebHost.CreateDefaultBuilder(args).UseKestrel(
        (options) => AttachEndPoints(options, settings.HttpBindingPort)).
        UseStartup<HttpStartup>().Build();
}

protected static void AttachEndPoints(KestrelServerOptions options, int? port)
{
    var ip = IPAddress.Any;
    options.Listen(ip, port ?? 80)
}

这作为控制台应用程序运行得很好,一切正常。但是,当我使用 ASP.Net Core Module 在 IIS 中启动应用程序时,ASP.Net Core Module 的侦听端口会覆盖我自己指定的端口,并且两个 Http 端点都尝试绑定到同一个随机端口,导致系统无法开始。

4

0 回答 0