如何将外部域绑定到.NET Core 3.1 Kestrel自托管应用程序



我有一个简单的。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。服务器红隼[0]无法启动Kestrel。系统网插座。SocketException(10013(:试图以套接字访问权限所禁止的方式访问套接字。

如有任何帮助,我们将不胜感激。

我不确定,但看起来80端口被IIS占用了。我禁用了DefaultWebSite,可以将域名绑定到本地Kestrel运行。