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 和过时的库

Net Core 3.0 及 AspNet 3.0

Aspnet Core - 应用程序启动事件

Aspnet Core 十进制绑定不适用于非英语文化

Aspnet Core 3.1 Identity ConfirmEmail 未按预期工作

为 ASPNET CORE 7 项目添加 Serilog