尝试启动 Kestrel 时使用 UseUrls() 时出现权限被拒绝错误

Permission denied error when using UseUrls() when trying to launch Kestrel

我正在尝试在我的 mac 上 运行 一个 asp.net 核心 2.1 应用程序并收到错误 "Permission Denied" 并且当我指定UseUrls() 选项。

这是我的program.cs

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

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseKestrel()
            .UseUrls("http://api.dev.mysite.com")
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();
}

如果我注释掉 'UseUrls',那么网站会在 https://localhost:5001

正常启动

Kestrel 不绑定到特定的主机名。 UseUrls() 让您只绑定到网络接口,例如:

http://localhost:5000
http://127.0.0.1:5001
http://*:5002

如果您想使用主机名进行访问,您需要修改 /etc/hosts 文件以将主机名映射到本地主机,但您需要指定端口 http://api.dev.mysite.com:5001 除非它设置为侦听 80 或 443(对于 https)。或者使用像 IIS/Nginx/Apache 这样的反向代理。对于 Nginx,配置是:

server {
  listen       80;
  server_name  api.dev.mysite.com;
  location / {
    proxy_pass http://127.0.0.1:5001;
  }
}