Flutter AspNet Core SocketException (SocketException: OS Error: Connection timed out, errno = 110, a
Posted
技术标签:
【中文标题】Flutter AspNet Core SocketException (SocketException: OS Error: Connection timed out, errno = 110, address = 192.168.1.87, port = 46186)【英文标题】: 【发布时间】:2020-09-07 22:35:03 【问题描述】:我正在尝试使用我的智能手机(不是模拟器)连接到带有 SignalR 后端的 Aspnet Core。 我将 Cors 添加到 Startup.cs:
public void ConfigureServices(IServiceCollection services)
services.AddCors(options =>
options.AddPolicy(MyAllowSpecificOrigins,
builder => builder.SetIsOriginAllowed((host) => true)
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
);
services.AddSignalR();
readonly string MyAllowSpecificOrigins = "AllowOrigins";
...
app.UseCors(MyAllowSpecificOrigins);
我尝试连接 Angular 前端,它运行良好,我想对我的 Flutter 应用程序做同样的事情。 以下是部分代码:
const url = 'http://192.168.1.87:44327/signalrtc';
class _MyHomePageState extends State<MyHomePage>
final hubConnection = HubConnectionBuilder().withUrl("$url").build();
@override
void initState()
super.initState();
hubConnection.onclose((_)
print("Connessione persa");
);
hubConnection.on("ReceiveMessage", onReceiveMessage);
startConnection();
void startConnection() async
print('start');
await hubConnection.start();
我只使用Flutter SignalR package 并复制了本地计算机 IPv4 以连接到我的后端,因为正如我已经说过的,我没有使用模拟器,所以我无法插入 10.0.2.2,但如果我尝试运行应用程序它会给我那个错误。 我的电脑和智能手机都连接到同一个网络。
有什么想法吗?
【问题讨论】:
我不认为这是一个 CORS 问题。让我们看看是否有人可以回答这个问题。 :) 【参考方案1】:已解决
我刚刚为 Visual Studio 安装了Conveyor by Keyoti。
ASP.NET Core - remote access from smartphone
使用它,您无需更改任何配置,它只是在后台运行,并为您提供可以远程使用的端口,还可以通过隧道连接到互联网,因此您可以根据需要拥有一个公共 URL。
您只需要安装它,在调试模式下运行并打开 Keyoti,您会发现另一个可用于智能手机的 URL。
最后我将我在 Flutter 项目中的 URL 更改为:
const url = 'http://192.168.1.87:44327/signalrtc';
收件人:
const url = 'https://192.168.1.87:45456/signalrtc';
基本上我的 IPv4 是从 keyote 提供的,但带有另一个端口。
【讨论】:
以上是关于Flutter AspNet Core SocketException (SocketException: OS Error: Connection timed out, errno = 110, a的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft.AspNet.WebApi.Core 和过时的库