【问题标题】:Unable to start Kestrel. System.IO.IOException: Failed to bind to address http://127.0.0.1:5000: address already in use无法启动 Kestrel。 System.IO.IOException:无法绑定到地址 http://127.0.0.1:5000:地址已在使用中
【发布时间】:2019-08-04 05:02:42
【问题描述】:

我按照此 URL 中的步骤将 .NET core 2.1 Web 应用程序代码发布到 Linux Centos 7 服务器。

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-2.2

我尝试运行“sudo dotnet application_name.dll”。我收到以下错误消息。我错过了什么吗?我在 windows 机器上使用 Visual Studio 2017 发布代码并将代码复制到 Linux 服务器。

crit: Microsoft.AspNetCore.Server.Kestrel[0]
      Unable to start Kestrel.
System.IO.IOException: Failed to bind to address http://127.0.0.1:5000: address already in use. ---> Microsoft.AspNetCore.Connections.AddressInUseException: Address already in use ---> System.Net.Sockets.SocketException: Address already in use

程序.cs

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

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>();
    }

Startup.cs 配置

 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        app.UseStaticFiles();

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });

        app.UseForwardedHeaders(new ForwardedHeadersOptions
        {
            ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
        });
    }

launchSettings.json:

  "applicationUrl": "https://localhost:5001;http://localhost:5000"

【问题讨论】:

    标签: linux asp.net-core .net-core centos7 asp.net-core-2.1


    【解决方案1】:

    我只是重新启动 IIS,然后再次删除并创建一个网站,它工作正常!

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    【解决方案2】:

    令人惊讶(或不足为奇)我重新启动了我的计算机,然后没有错误:| 我检查了端口,没有应用程序使用端口 5000,我不知道是什么导致了这个错误

    更新:

    重启此服务可能fix 问题:Host Network Service on windows Services program

    【讨论】:

    • 重启“主机网络服务”也为我解决了这个问题。
    【解决方案3】:

    在 Windows 10 更新 KB4074588 之后,某些端口被 Windows 保留,应用程序无法绑定到这些端口。 50067在屏蔽范围内。

    您可以使用 netsh interface ipv4 show excludeportrange protocol=tcp 列出保留的范围。

    排除端口范围列表

    参考问题:https://superuser.com/questions/1486417/unable-to-start-kestrel-getting-an-attempt-was-made-to-access-a-socket-in-a-way

    【讨论】:

    • 这为我解决了问题。谢谢
    【解决方案4】:

    就我而言,我可以通过更改 Kestrel 使用的端口来解决这个问题。这里有两个对我有用的选项(选择一个):

    1. 将“applicationUrl”设置添加到 launchSettings.json 文件(在 VS2019 的 Properties 文件夹下)。在下面的示例中使用“https://localhost:5201”:

      "profiles": {
        "IIS Express": {
            ...
            "environmentVariables": {
              "ASPNETCORE_ENVIRONMENT": "Development"
            },
          "Host": {
            ...
          }
        },
        "Your.App.Namespace.Api": {
          ...
          "environmentVariables": {
            "ASPNETCORE_ENVIRONMENT": "Development"
          },
          "applicationUrl": "https://localhost:5201;http://localhost:5200"
        }
      }
      
    2. 在 Program.Main() 中向 WebHostBuilder 添加“UseUrls”流畅的方法调用。即以下示例中的“http://localhost:5200/”:

      using (var host = new WebHostBuilder()
      .UseKestrel(o => o.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(30))
      ...
      .UseStartup<Startup>()
      .UseUrls("http://localhost:5200/")
      

    【讨论】:

      【解决方案5】:

      错误信息很明确:您机器上的某些东西已经在监听端口 5000。

      2 个解决方案:

      • 找出正在侦听此端口的内容并将其停止。
      • 绑定到另一个端口。

      【讨论】:

      • LISTEN 0 128 127.0.0.1:5000 : 用户:(("dotnet",pid=12199,fd=159))
      • @nav100 检查哪个进程有pid=12199。也许你启动了你的程序两次?
      • 测试用户 12199 1 0 80 0 - 3023093 futex_ 71316 0 Mar11? 00:01:54 /usr/bin/dotnet /var/www/testapp/testapp.dll
      • 您实际上并没有提供任何解决方案。最好给出如何做这些事情的方法
      • 但这种情况通常只在 Linux 中运行本地网站时发生
      猜你喜欢
      • 1970-01-01
      • 2022-06-30
      • 1970-01-01
      • 2014-04-27
      • 2019-07-29
      • 2014-07-10
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      相关资源
      最近更新 更多