Asp.net web api 无法从网络上的远程计算机访问ASP.NET核心API

Asp.net web api 无法从网络上的远程计算机访问ASP.NET核心API,asp.net-web-api,.net-core,Asp.net Web Api,.net Core,我通过dotnetnewwebapi(v3.1.101)创建了示例dotnetwebapi项目,并更新了launchSettings.json的applicationUrl首先http::5000然后再http:0.0.0:5000。当我尝试转到http://:5000/WeatherForecast时,它会超时,但当我在本地尝试http://localhost:5000/WeatherForecast,它可以工作 我在端口5000上运行了一个React应用程序,我可以成功地远程连接到它,所以我

我通过
dotnetnewwebapi
(v3.1.101)创建了示例dotnetwebapi项目,并更新了launchSettings.json的
applicationUrl
首先
http::5000
然后再
http:0.0.0:5000
。当我尝试转到http://:5000/WeatherForecast时,它会超时,但当我在本地尝试
http://localhost:5000/WeatherForecast
,它可以工作

我在端口5000上运行了一个React应用程序,我可以成功地远程连接到它,所以我认为这不是防火墙问题

我在Mac电脑上运行。我还尝试添加
.UseUrls(…)
,但没有成功

为什么我不能远程连接


提前谢谢

我在Windows中使用VSCode,我注意到我无法从终端使用dotnet run命令,我必须从Debug侧栏窗口点击play,它才能工作,然后我可以从同一网络上的其他计算机连接


如果您想使用终端启动,那么我认为您必须在选项中手动指定launch.json文件。请参见此处的--launch profile选项:

dotnet run
将尝试自动加载
MyApplication\Properties\launchSettings.json
。 如果文件launchSettings.json存在并且设置了“所有地址”绑定:

{
  "profiles": {
    "Uno": {
      "commandName": "Project",
      "launchBrowser": true,
      "applicationUrl": "https://0.0.0.0:5001;http://0.0.0.0:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}
然后,运行该应用程序将得到以下结果:

> dotnet run
info: Microsoft.Hosting.Lifetime[0]
    Now listening on: https://0.0.0.0:5001
info: Microsoft.Hosting.Lifetime[0]
    Now listening on: http://0.0.0.0:5000
以及检查打开的端口:

> netstat -na | ? { $_ -match "5000|5001" }
  TCP    0.0.0.0:5000           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:5001           0.0.0.0:0              LISTENING
如果launchSettings.json不存在或存在其他名称,则将应用默认绑定:

> mv .\Properties\launchSettings.json .\Properties\launch.json
> dotnet run
info: Microsoft.Hosting.Lifetime[0]
      Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[0]
      Now listening on: https://localhost:5001
除非您使用特定选项指定URL: 服务器URL=”http://0.0.0.0:5000;https://0.0.0.0:5001"

还请注意,当任何应用程序第一次尝试绑定到0.0.0.0:port时,会出现如下窗口:
如果您处于多监视器设置中,或者如果您立即关注其他窗口,则很容易错过它。此外,此对话框将设置特定于应用程序的防火墙规则,因此您可能为React应用程序创建了规则,而不是为dotnet应用程序创建了规则。

您使用的是防火墙吗?我有一个防火墙,但我通过React应用程序验证端口5000已打开。问题:您是否在修改启动设置后重新启动了应用程序,你不是吗?@Ian-怎么回事?在调试模式下运行它很有效!我想知道如何让它在终端中正确运行?@CodeSlinger512-将注释改为答案,因为它似乎是一个。还添加了描述如何使用终端的链接(我想)。感谢您的输入。我已经将
launchSettings.json
中设置的字段设置为
0.0.0
,输出结果如您所示。我也在Mac电脑上运行,而不是Windows。