繁体   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