外网访问.net应用,kestrel监听指定IP或者端口
用.net开发了一个web应用,在非IIS或Nginx托管使用默认Kestrel时,默认无法在外网访问,一开始以为是防火墙问题,关闭防火墙依然不行,还得依靠强大的搜索,才知道Kestrel默认监听的是localhost,可以在本机通过localhost或者127.0.0.1访问,如果需要外部访问需要监听0.0.0.0或本机IP。
以下几种方式可以解决问题:
- 在appsettings.json添加urls配置
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"urls": "http://0.0.0.0:5000",
"AllowedHosts": "*"
}
- 通过编码实现
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");
评论