【问题标题】:How to solve "Failed to bind to address http://127.0.0.1:5000: address already in use."如何解决“无法绑定到地址http://127.0.0.1:5000:地址已在使用中。”
【发布时间】:2022-06-30 19:36:13
【问题描述】:

我使用 Visual Studio 创建了一个 Asp.Net Core 应用,并使用 VS 的发布选项在我的 Azure 帐户上发布我的应用。

发布后,我使用该链接访问我的网站,但收到“HTTP 错误 500.30 - ASP.NET Core 应用程序无法启动”

我在 Azure 中的控制台手动启动我的应用程序并了解有关该问题的更多详细信息,我得到了这个。

不确定如何用我的端口解决这个问题

下面是program.cs的代码

var connectionString = builder.Configuration.GetConnectionString("LocalConnection");
builder.Services.AddDbContext<LotharDataBaseContext>(options =>
    options.UseSqlServer(connectionString));

builder.Services.AddControllersWithViews();

builder.Services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
   .AddNegotiate();

builder.Services.AddAuthorization(options =>
{
    // By default, all incoming requests will be authorized according to the default policy.
    options.FallbackPolicy = options.DefaultPolicy;
});
builder.Services.AddRazorPages();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthentication();
app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

【问题讨论】:

  • 当您已经有一个正在运行的实例使用该端口时,通常会发生这种情况。
  • 某处,已经在 localhost 上使用端口 5000 启动了一项服务。这就是为什么。它可能是您的应用程序或 Web 服务的另一个实例,或者您计算机上使用端口 5000 的另一个应用程序。指定其他端口,例如 5001、5050、6000,或使用端口 5000 关闭该其他服务。
  • 这不像是Azure URL,这是什么部署?
  • 它是否针对本地主机运行?如果是,您可以在cmd 中运行netstat -apo,以检查哪些应用程序可能正在使用您尝试运行代码的端口。另外,如果它 localhost,那么审查它并不会带来太多好处:)
  • @EricWu 显然,op 正在使用 azure app 服务,所以这个解决方案对他来说没用。你的方法适合在vm或者本地使用。

标签: c# asp.net azure asp.net-core


【解决方案1】:

通过你的截图,我看到了Kestrel,所以我认为,你创建的webapp应该是在linux平台上的。屏幕截图上的端口占用是预期行为,它不应该是根本原因。由于该站点已经在运行,并且您手动命令它重新启动,因此应该会出现此错误。

我建议你先提供你的 Program.cs 文件,我们需要查看 UseUrls,或者 UseKestrel 的代码。

如何在启动 webapp 时查看日志:

  1. 打开你的kudu网站,url应该是https://your_app_name.scm.azurewebsites.net

  2. 打开newui,https://your_app_name.scm.azurewebsites.net/newui

  3. 步骤:

  1. 在这个 default_docker.log 文件中,我们会得到有用的信息。

您可以尝试的步骤:

  1. 尝试添加.UseIIS,我们知道你的平台是linux。

    Kestrel address binding errors in azure app service

  2. 删除.UseUrls(),重新部署你的webapp。

【讨论】:

  • 在 program.cs 中我什至没有 UseUrls(),而是有 UseHsts()。我会试试你的方法。
  • 我已经从 program.cs 添加了代码
  • @Adriel 请按照我的步骤获取 kudu 站点中的 docker_logs。您的 program.cs 文件似乎正确。
  • 嗨,Jason,我的 Kudu 站点中没有“...docker.log”文件。我可以添加我在日志文件中的截图
  • @Adriel 你能检查GetConnectionString("LocalConnection")的值吗?
【解决方案2】:

就我而言,我使用的是azure sql数据库,因此将数据库的连接字符串更改为使用tcp协议和1433作为端口,解决了这个问题。

e-g​​

Server=tcp:<ServerName>.database.windows.net,1433;Initial Catalog=<DatabaseName>

【讨论】:

    猜你喜欢
    • 2019-08-04
    • 2019-07-29
    • 1970-01-01
    • 2014-04-27
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 2018-03-20
    相关资源
    最近更新 更多