Flutter 物理 iOS 设备无法向我的本地 asp.net 服务器发出 api 请求

Flutter physical iOS device unable to make api request to my local asp.net server

当我从物理 iOS 设备调试我的应用程序并尝试向我的本地服务器发出请求时,我收到此错误,我没有在 iOS 模拟器上:

SocketException (SocketException: OS Error: Connection refused, errno = 61, address = 192.168.1.186, port = 56740)

那个端口应该是我的服务器端口吗?那是5001.

我可以在 dart 开发工具调试器中看到发送了这个请求:

GET https://192.168.1.186:5001/fashionitems/search?searchTerm=Fa&currentPage=1&pageSize=10

这是正确的 URL 并且在 iOS 模拟器中工作,所以看起来它发送了正确的请求。

我正在为服务器使用 asp.NET 6。

我觉得问题出在我的服务器上,因为 google 地图 API 请求正在物理设备上运行。 asp.NET 6 应用程序在模拟器而不是物理设备上运行时,我会查看它的哪一部分?

有什么可以解决这个问题的吗?

编辑:在 Flutter 中,我发现如果在物理设备上进行测试,我们应该使用 ip 地址而不是 'localhost'。所以我就那样做了。有趣的是,IP 地址不适用于 iOS 模拟器,只有 'localhost' 可以。我不认为应该是这样。

Wifi 是 starlink,但我认为这不会有什么不同。我无法使用移动数据热点进行测试。

服务器连接字符串是:

  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost;Port=5432;Database=vepo_dev_db;User Id=postgres;Password=password;Include Error Detail=true"
  },

在 asp.net 应用上:

launchSettings.json

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:53210",
      "sslPort": 44301
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "swagger",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "Vepo": {
      "commandName": "Project",
      "dotnetRunMessages": "true",
      "launchBrowser": true,
      "launchUrl": "GroceryItems",
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

改变

"applicationUrl": "https://localhost:5001;http://localhost:5000",

"applicationUrl": "https://0.0.0.0:5001;http://localhost:5000",