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¤tPage=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",
当我从物理 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¤tPage=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",