我正在尝试使用智能手机(而不是仿真器)连接到带有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 App中也这样做。 这是代码的一部分:
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,但是如果我尝试运行该应用程序,它将给我该错误。 我的计算机和智能手机都连接到同一网络。
有什么主意吗?
答案 0 :(得分:0)
已解决
我刚刚为Visual Studio安装了Conveyor by Keyoti。
ASP.NET Core - remote access from smartphone
有了它,您无需更改任何配置,它仅在后台运行,并为您提供可以远程使用的端口,并且它可以隧道传输到Internet,因此您可以使用公共URL。< / p>
您只需安装它,在调试模式下运行,然后打开Keyoti,您将找到另一个可用于智能手机的URL。
最后,我将Flutter项目中的URL更改为:
const url = 'http://192.168.1.87:44327/signalrtc';
收件人:
const url = 'https://192.168.1.87:45456/signalrtc';
基本上是我从键盘输入的IPv4,但带有另一个端口。