簡體   English   中英

如何將外部域綁定到 .NET Core 3.1 Kestrel 自托管應用程序?

[英]How to bind external domain to .NET Core 3.1 Kestrel self-hosted application?

我有一個簡單的 .NET Core 3.1 自托管 Kestrel 應用程序。 發布到我的服務器后,它在http://localhost:5000正確運行。

我想通過遠程瀏覽器訪問這個應用程序,所以我更改了Program.cs如下:

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
    {
        Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.ConfigureKestrel(so =>
            {
                so.Listen(IPAddress.Any, 5000); //==> This is OK
            });
            webBuilder.UseStartup<Startup>();
        });
    }   
}

現在可以通過http://IP:port地址從任何遠程瀏覽器訪問該應用程序。 但是,我不想使用 IP:Port,而是想將域 URL(例如www.XXXX.com )綁定到我的應用程序。

我使用 Cloudflare 作為我的 DNS 和代理服務器。 請記住,Cloudflare 不支持端口轉發。 此外,Cloudflare 中的 Portzilla 應用程序對我沒有用。

到目前為止,我所做的是向服務器添加了一個新的 IP(比方說112.250.22.33 ),並嘗試將應用程序配置為偵聽此特定 IP 地址的端口 80:

webBuilder.ConfigureKestrel(so =>
{
    so.Listen(IPAddress.Parse("112.250.22.33"), 80); //==> NOT OK
});

但是,使用此配置,應用程序根本無法運行——即使我以管理員身份運行它也是如此。 相反,它返回此錯誤:

Microsoft.AspNetCore.Server.Kestrel[0] 無法啟動 Kestrel。 System.Net.Sockets.SocketException (10013):嘗試以訪問權限禁止的方式訪問套接字。

任何幫助將不勝感激。

我不確定,但看起來80端口由 IIS 持有。我禁用了DefaultWebSite並且可以將域名綁定到本地 Kestrel 運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM