Visual Studio Mac API无法绑定到地址(已使用)错误

时间:2018-10-04 15:05:04

标签: macos visual-studio .net-core

我正在尝试通过.Net Core创建Web API。我只是将样板ValuesController用作Hello World。运行项目时,出现以下错误:

System.IO.IOException: "Failed to bind to address https://127.0.0.1:5001: address already in use." ---> System.Exception {Microsoft.AspNetCore.Connections.AddressInUseException}: "Address already in use" ---> System.Exception {System.Net.Sockets.SocketException}: "Address already in use"
  at at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName)\n   at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)\n   at System.Net.Sockets.Socket.Bind(EndPoint localEP)\n   at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransport.BindAsync()
  --- End of inner exception stack trace ---
  at at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransport.BindAsync()\n   at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.<>c__DisplayClass22_0`1.<<StartAsync>g__OnBind|0>d.MoveNext()\n--- End of stack trace from previous location where exception was thrown ---\n   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context)
  --- End of inner exception stack trace ---
  at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context)\n   at Microsoft.AspNetCore.Server.Kestrel.Core.LocalhostListenOptions.BindAsync(AddressBindContext context)\n   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.AddressesStrategy.BindAsync(AddressBindContext context)\n   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindAsync(IServerAddressesFeature addresses, KestrelServerOptions serverOptions, ILogger logger, Func`2 createBinding)\n   at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.StartAsync[TContext](IHttpApplication`1 application, CancellationToken cancellationToken)\n   at Microsoft.AspNetCore.Hosting.Internal.WebHost.StartAsync(CancellationToken cancellationToken)\n   at Microsoft.AspNetCore.Hosting.WebHostExtensions.RunAsync(IWebHost host, CancellationToken token, String shutdownMessage)\n   at Microsoft.AspNetCore.Hosting.WebHostExtensions.RunAsync(IWebHost host, CancellationToken token)\n   at Microsoft.AspNetCore.Hosting.WebHostExtensions.Run(IWebHost host)\n   at Sysmex.Unity.Interfaces.WebAPI.Program.Main(String[] args) in /Users/mharrison/Developer/unity-interfaces/Sysmex.Unity.Interfaces.WebAPI/Sysmex.Unity.Interfaces.WebAPI/Program.cs:17

我假设这只是一个简单的设置问题,但是在谷歌搜索时我什么也找不到。我需要设置什么才能允许我在Mac OS上调试项目吗?

8 个答案:

答案 0 :(得分:2)

假设您正在使用默认端口:

通常在进程损坏并与Visual Studio断开连接时发生。

如果您使用的是Mac,请打开活动监视器并使用“ dotnet”名称终止该进程

如果您使用的是非标准端口:,则需要将端口号更改为可用的端口号。 Amit对此线程提供了一个解决方案,可使用该解决方案更改端口。

答案 1 :(得分:2)

如果您使用的是 Mac,您可以通过 lsof -i tcp:<PORT> 找到在端口上运行的进程。

要杀死在端口上运行的进程,您可以尝试npx kill-port <PORT>

答案 2 :(得分:1)

我知道这是最新答案。但这可能对某人有帮助。

MAC Visual Studio似乎有一个错误,它总是会https://127.0.0.1/5001出现。

如果右键单击项目,请选择选项。然后将出现“项目选项对话框”。在左窗格中,转到“运行”->“配置”->“默认”,然后在右窗格中选择“ ASP.Net Core”选项卡。默认情况下使用的是应用网址。根据您的需要进行更改。

Change IP address in App URL

答案 3 :(得分:1)

在Visual Studio的MAC 2019端口5002上的项目中遇到类似的错误, 重新启动Visual Studio并没有执行任何操作。

我关闭了计算机,然后重新启动

我认为这是一个更安全的解决方案。

答案 4 :(得分:0)

通过实施Bill Boga在他的网站https://www.billbogaiv.com/posts/setting-aspnet-host-address-in-net-core-2

上提供的解决方法,我至少能够暂时解决此问题。

我的项目的关键是在BuildWebHost函数中添加.UseUrls(urls:“ http://localhost:10000”)。像这样:

using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using OrchardCore.Logging;
using OrchardCore.Modules;

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

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseNLogWeb()
                .UseStartup<Startup>()
                .UseUrls(urls: "http://localhost:10000") // <-- localhost urls
                .Build();
    }
}

希望这会有所帮助!

答案 5 :(得分:0)

端口5001已在您的系统中使用。

我使用任务管理器杀死进程“ dotnet核心主机”解决了我的问题enter image description here

答案 6 :(得分:0)

确保每次遇到该错误时都可以更改端口,甚至重新启动计算机,这是解决此问题的正确方法

找到该端口上正在运行的内容并终止该进程

在Mac上的终端

找到进程号

lsof -i: <port number> 例如lsof -i:5001

然后杀死进程号

kill -9 <process number> 例如-杀死-9 1600

答案 7 :(得分:-1)

端口5001已在您的系统中使用。将端口号更改为5002或任何您想要的名称。

您可以使用 .UseUrls 将端口号添加到 CreateWebHostBuilder

  public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseUrls("http://localhost:5002")
            .UseStartup<Startup>();

或者,如果您使用Visual Studio代码,只需替换 .vscode-> launch.json 中的 args 部分。

"args": ["urls=http://localhost:5002"]