在指定要与.UseKestrel()
绑定的端口时,出现以下错误。.但是,如果我删除了kestrel选项,并且从浏览器中检查API,则一切正常。
我尝试绑定到我的应用程序默认未设置端口的端口,并且尝试检查netstat
以积极避免使用任何端口。除了完全删除选项之外,什么都没有。这不会在我的Mac或其他Windows 10计算机上复制。该设备是Windows10。
.UseKestrel(options =>
{
options.Listen(IPAddress.Loopback, 50470);
options.Listen(IPAddress.Any, 80);
})
: Microsoft.AspNetCore.Server.Kestrel[0]
Overriding address(es) 'http://localhost:50470/'. Binding to endpoints defined
in UseKestrel() instead.
crit: Microsoft.AspNetCore.Server.Kestrel[0]
Unable to start Kestrel.
System.Net.Sockets.SocketException (10013): An attempt was made to access a
socket in a way forbidden by its access permissions
at
System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException
(SocketError error, String callerName)
at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress
socketAddress)
at System.Net.Sockets.Socket.Bind(EndPoint localEP)
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransport.
BindAsync() at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.
<>c__DisplayClass21_01.<<StartAsync>g__OnBind|0>d.MoveNext() `
答案 0 :(得分:12)
也可以在此处查看Darkthread的答案:https://superuser.com/questions/1486417/unable-to-start-kestrel-getting-an-attempt-was-made-to-access-a-socket-in-a-way
我们发现已经使用了很长时间的端口不再可用,因为它已被Windows保留!您可能希望使用以下命令检查保留的端口:
xmlns
答案 1 :(得分:2)
Windows Update之后,Windows保留了某些端口,并且应用程序无法绑定到这些端口。。请检查此命令以禁止Os上的端口
netsh接口ipv4显示排除的端口范围协议= tcp
答案 2 :(得分:1)
当您直接通过ASP.NET Core
运行Kestrel
应用程序而没有additional reverse proxy
或IIS
之类的nginx
时,您将需要正确配置托管URL 。
问题是因为您没有在Port sharing limitation
网络服务器中关注kesterl
。
使用kestrel
网络服务器时,应将unique port
设置为app。(如果使用port 80
,请确保没有应用程序使用此端口)。
并且您的应用程序也具有足够的权限。
更多信息:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2
我希望是有用的。
答案 3 :(得分:0)
问题出在端口80的附加绑定上,对此进行了更新更正了该问题。
答案 4 :(得分:0)
就我而言,从应用的 launchSettings.json 中删除无效的本地 IP 和端口地址组合做到了。
答案 5 :(得分:0)
“.UseKestrel(options => { options.Listen(...) })”中端口 80 的附加绑定导致了我的问题。