外网访问.net应用,kestrel监听指定IP或者端口

简介.net应用默认只能本机访问,如果想被外网访问需要做一些配置。

用.net开发了一个web应用,在非IIS或Nginx托管使用默认Kestrel时,默认无法在外网访问,一开始以为是防火墙问题,关闭防火墙依然不行,还得依靠强大的搜索,才知道Kestrel默认监听的是localhost,可以在本机通过localhost或者127.0.0.1访问,如果需要外部访问需要监听0.0.0.0或本机IP。

以下几种方式可以解决问题:

  1. 在appsettings.json添加urls配置
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "urls": "http://0.0.0.0:5000",
  "AllowedHosts": "*"
}

  1. 通过编码实现
    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>()
                .UseKestrel(options =>
                {
                    // Listen on specific IP and port
                    options.Listen(IPAddress.Parse("0.0.0.0"), 500);
                });
            });
    

在新版本.net中

var builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseKestrel(options =>
{
    options.Listen(IPAddress.Parse("0.0.0.0"), 5000);
});

// 或者更简单的

var builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseUrls("0.0.0.0:5000");

本站发布的文章受知识共享协议保护,转载、收录请标明出处。

评论


昵称:   邮箱:

Top
An error has occurred. This application may no longer respond until reloaded.Reload 🗙