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

Posted

技术标签:

【中文标题】Flutter 物理 iOS 设备无法向我的本地 asp.net 服务器发出 api 请求【英文标题】:Flutter physical iOS device unable to make api request to my local asp.net server 【发布时间】:2022-01-24 04:18:28 【问题描述】:

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

SocketException (SocketException: OS Error: Connection denied, errno = 61,地址 = 192.168.1.186,端口 = 56740)

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

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

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

这是正确的 URL,并且适用于 iOS 模拟器,因此看起来它正在发送正确的请求。

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

我觉得问题出在我的服务器上,因为 google maps 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"
      
    
  

【问题讨论】:

你的物理设备和.Net服务器是否通过wifi在同一个网络上? @Dev 他们都连接到同一个WIFI网络。我的笔记本 ipv4 是 192.168.1.186,我的 iPhone ipv4 是 192.169.1.118。 我认为有一些问题 192.168.1.186 和 192.169.1.118 是不同的网络系列。禁用 sim 数据并再次验证。尝试从笔记本电脑ping 192.169.1.118,看看它是否可以ping iphone @Dev 我打错了。 iPhone 是 192.168.1.118。道歉 检查防火墙是否阻止端口 5001。它很可能只是网络问题。 【参考方案1】:

改变

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

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

【讨论】:

太好了,它正在工作!非常感谢! 欢迎兄弟。乐于助人。

以上是关于Flutter 物理 iOS 设备无法向我的本地 asp.net 服务器发出 api 请求的主要内容,如果未能解决你的问题,请参考以下文章