当前位置: 首页 > 知识库问答 >
问题:

如何从Xamarin客户端连接到SignalR服务器?

阳光辉
2023-03-14

(**)我创建了一个 ASP.NET Web 服务器,托管 SignalR 中心。我遵循了本教程。它有效。然后我创建了一个Xamarin.Android客户端(*)。问题是我无法连接到服务器。我想,由于我的主机地址中的“本地主机”,我无法连接。例外是相当大的。

如果我的怀疑是正确的,我该如何解决?如何使本地主机看起来像普通服务器?

(*) -我也试过Xamarin。一般形式。

(**) - 请看问题底部的“编辑”。

这是我的方法:

    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.Main);

        // Get our button from the layout resource,
        // and attach an event to it
        Button button = FindViewById<Button>(Resource.Id.MyButton);

        button.Click += async delegate 
        {
            button.Text = string.Format("{0} clicks!", count++);
            var hubConnection = new HubConnection("http://localhost:64642");
            var chatHubProxy = hubConnection.CreateHubProxy("ChatHub");
            try
            {
                // Start the connection
                await hubConnection.Start();

                // Invoke the 'UpdateNick' method on the server
                await chatHubProxy.Invoke("Send", new object[] { "TheMessage", "JohnDoe" });
            }
            catch(Exception ex)
            {

            }
        };
    }

{System.Net.WebException: 错误: 连接失败 (连接被拒绝) ---

--- 在 System.Runtime.ExceptionServices.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] 中 /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservices/exceptionservicescommon.cs:143 的堆栈---跟踪结束 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00047] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 atSystem.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable'1 ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:535 at System.Net.Http.HttpClientHandler c__async0.MoveNext () [0x003ce] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System.Net.Http/System.Net.Http/HttpClientHandler.cs:379

---从System.Runtime.ExceptionServices.ExceptionDispatchInfo处引发异常的前一位置的堆栈结束跟踪。在/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon中抛出()[0x0000c]。cs:143,位于System.Runtime.ComplerServices.TaskAwaiter。/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/System/runtime/complerservices/TaskAwaiter中的ThrowForNonSuccess(System.Threading.Tasks.Task任务)[0x00047]。cs:187,位于System.Runtime.ComplerServices.TaskAwaiter。处理/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/System/runtime/complerservices/TaskAwaiter中的NonSuccessAndDebuggerNotification(System.Threading.Tasks.Task任务)[0x0002e]。cs:156,位于System.Runtime.ComplerServices.TaskAwaiter。/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/System/runtime/complerservices/TaskAwaiter中的ValidateEnd(System.Threading.Tasks.Tasks任务)[0x0000b]。cs:128,位于System.Runtime.ComplerServices。ConfiguredTaskAwaitable` 1个Configured TaskAwaiter[TResult]。GetResult()[0x00000]位于/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/complerservices/TaskAwaiter中。cs:535,位于System.Net.Http。/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System.Net.Http/System.Net.Http/HttpClient.cs:276中的Http客户端c_async0.MoveNext()[0x000a9]

--- 在 System.Runtime.ExceptionServices.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] 中 /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservices/exceptionservicescommon.cs:143 的堆栈---跟踪结束 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00047] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 atSystem.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 at System.Runtime.CompilerServices.TaskAwaiter.GetResult () [0x00000] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:113 atAndroidApp.MainActivity

编辑:

正如梅森和杰森所建议的那样,我可能必须使用正确的 IP 而不是“本地主机”。Android模拟器看到的实际本地主机的IP。我正在努力寻找那个IP,它在Android设置中的某个地方。任何帮助都会很棒!

共有1个答案

有睿
2023-03-14

您可以使用 Google SDK 模拟器中的 http://10.0.2.2:64642 访问 PC 主机上运行的 ASP.NET 网站。如果它无法到达服务器,则可能需要将Windows防火墙配置为允许传入的HTTP / HTTPS连接。

 类似资料:
  • 我有一个示例Spring启动应用程序来运行图形QL服务器,具有作为客户端,我的pom有以下依赖项: 当我尝试从客户端连接时,出现以下错误: 狩猎决议好心建议。 我还有几个问题: 我应该使用SimpleGraphQLHttpServlet将请求路由到endpoint吗 我正在React UI上使用apollo client,那么它是强制使用apollo server还是spring boot可以工作

  • websocket客户端(使用Autobahn/Python和Twisted)需要连接到websocket服务器:客户端需要向服务器提供其客户端证书,客户端需要检查服务器的证书。例如,这些证书是在Kubernetes minikube安装过程中创建的。特别地: 服务器证书(据我所知为X509格式) 客户端证书~/。minikube/客户。按键 我已经检查过,我可以成功地使用这些证书密钥使用发出库伯

  • 下面是我的服务器代码: 下面是我的客户端活动代码: 以下是客户端活动的xml布局文件: 因此,我开始认为这不是连接端口的问题,而是应用程序的android客户端的问题。但我想不出有什么问题。 顺便说一下,当我试图发送消息时,运行客户端的手机和运行服务器的笔记本电脑都连接到了同一个网络。

  • 我对客户端如何连接到其struct sockaddr_in设置为ADDRESS.sin_addr的服务器感到非常困惑。s_addr=htonl(INADDR_ANY); 绑定调用后,服务器监听套接字将被设置为INADDR_ANY,客户端将如何连接到设置为INADDR_ANY的套接字? 在connect()系统调用之前,客户端将传递到sockaddr_instruct的地址是什么?是服务器的ip地址

  • 客户端应用程序在以下代码处挂起:

  • 所有的 我正在尝试连接到Oracle 19C数据库。我安装了两个Oracle客户端(11g和12c),因为我们需要支持遗留程序。我可以通过12c客户端与使用sqlplus的任何用户连接,没有问题。但是如果我与任何用户一起使用11g(11.2.0)客户端。我总是得到: 两个客户端都有完全相同的sqlnet。ora和tnsnames。ora文件,因此两个客户端都指向同一个数据库。 有什么想法吗?我是否