我正在尝试通过.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上调试项目吗?
答案 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”选项卡。默认情况下使用的是应用网址。根据您的需要进行更改。
答案 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)
答案 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"]