C# 将Xamarin客户端连接到信号服务器

C# 将Xamarin客户端连接到信号服务器,c#,asp.net,xamarin,xamarin.android,signalr,C#,Asp.net,Xamarin,Xamarin.android,Signalr,在你开始寻找副本之前,请阅读到最后 我在虚拟机中有两个项目: ASP.NET Web应用程序,托管信号器服务器。完全是教程项目 简单的Xamarin.Android项目,使用HAXM在Intel emulator上运行 环境:在Macbook上,我有运行Windows 10的VMWare虚拟机。所有东西(两个项目)都在这个虚拟机中运行 Environment*:在虚拟机的设置中,我设置了桥接网络Wi-Fi,这意味着“虚拟机显示为物理以太网网络“Wi-Fi”上的附加计算机”。因此,我的虚拟机具有类

在你开始寻找副本之前,请阅读到最后

我在虚拟机中有两个项目:

  • ASP.NET Web应用程序,托管信号器服务器。完全是教程项目
  • 简单的Xamarin.Android项目,使用HAXM在Intel emulator上运行
  • 环境:在Macbook上,我有运行Windows 10的VMWare虚拟机。所有东西(两个项目)都在这个虚拟机中运行
  • Environment*:在虚拟机的设置中,我设置了桥接网络Wi-Fi,这意味着“虚拟机显示为物理以太网网络“Wi-Fi”上的附加计算机”。因此,我的虚拟机具有类似10.0.1.56的IP EDIT:还有一个非常重要的提示:我已经构建了一个Xamarin.Forms项目,并用OnStart方法在PCL中创建了相同的signar客户端(请看下面的代码)。我运行iOS项目,它成功了

    问题是: 无法从
    Xamarin.Android
    客户端连接到ASP.NET服务器中的
    ConnectionHub

    以下是我迄今为止所做的工作:

  • 我知道我不能使用localhost,我想我必须使用10.0.1.56。但那没用
  • 然后,我遵循了解决方案。我关闭了防火墙,运行powershell命令,然后。。。我三点不及格。我在
    applicationhost.config
    中添加了绑定,并重新启动了vm和macbook。重新打开所有内容,使用浏览器我可以连接并从10.0.1.56:642发送消息。同样,使用常规浏览器。我可以从虚拟机甚至Macbook上做到这一点!但后来我尝试了Xamarin.Android,但失败了
  • 以下是Xamarin.Android代码:它基本上是VisualStudio创建的默认应用程序。我刚刚更改了OnCreate的
    方法:

        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://10.0.1.56: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)
                {
                    // Here I'm catching those exceptions... 
                }
            };
        }
    
    protectedoverride void OnCreate(捆绑包)
    {
    base.OnCreate(bundle);
    //从“主”布局资源设置视图
    SetContentView(Resource.Layout.Main);
    //从布局资源中获取我们的按钮,
    //并在其上附加一个事件
    Button Button=FindViewById(Resource.Id.MyButton);
    按钮。单击+=异步委托
    {
    button.Text=string.Format(“{0}点击!”,count++);
    var hubConnection=新的hubConnection(“http://10.0.1.56:64642");
    var chatHubProxy=hubConnection.CreateHubProxy(“ChatHub”);
    尝试
    {
    //启动连接
    等待连接。开始();
    //在服务器上调用“UpdateNick”方法
    等待chatHubProxy.Invoke(“发送”,新对象[]{“TheMessage”,“JohnDoe”});
    }
    捕获(例外情况除外)
    {
    //在这里,我捕捉到这些例外。。。
    }
    };
    }
    
    例外情况是:

      {System.Net.WebException: Error: ConnectFailure (Network is unreachable) ---> System.Net.Sockets.SocketException: Network is unreachable
      at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP) [0x000cb] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System/System.Net.Sockets/Socket.cs:1313 
      at System.Net.WebConnection.Connect (System.Net.HttpWebRequest request) [0x0019b] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System/System.Net/WebConnection.cs:195 
       --- End of inner exception stack trace ---
      at System.Net.HttpWebRequest.EndGetResponse (System.IAsyncResult asyncResult) [0x0005e] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System/System.Net/HttpWebRequest.cs:1023 
      at System.Threading.Tasks.TaskFactory`1[TResult].FromAsyncCoreLogic (System.IAsyncResult iar, System.Func`2[T,TResult] endFunction, System.Action`1[T] endAction, System.Threading.Tasks.Task`1[TResult] promise, System.Boolean requiresSynchronization) [0x00014] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/threading/Tasks/FutureFactory.cs:550 
    --- End of stack trace from previous location where exception was thrown ---
      at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/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 
      at System.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+<SendAsync>c__async0.MoveNext () [0x003ce] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System.Net.Http/System.Net.Http/HttpClientHandler.cs:379 
    --- End of stack trace from previous location where exception was thrown ---
      at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/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 
      at System.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.HttpClient+<SendAsyncWorker>c__async0.MoveNext () [0x000a9] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System.Net.Http/System.Net.Http/HttpClient.cs:276 
    --- End of stack trace from previous location where exception was thrown ---
      at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/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 
      at System.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 
      at AndroidApp.MainActivity+<>c__DisplayClass1_0+<<OnCreate>b__0>d.MoveNext () [0x000a5] in C:\Data\Projects\SinglaRSamples\AndroidApp\AndroidApp\MainActivity.cs:36 }
    
    {System.Net.WebException:错误:ConnectFailure(网络不可访问)--->System.Net.Sockets.SocketException:网络不可访问
    在/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System/System.Net.Sockets/Socket.cs:1313中的System.Net.Sockets.Socket.Connect(System.Net.EndPoint remoteEP)[0x000cb]处
    在/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System/System.Net/WebConnection.cs:195中的System.Net.WebConnection.Connect(System.Net.HttpWebRequest请求)[0x0019b]
    ---内部异常堆栈跟踪的结束---
    在/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System/System.Net/HttpWebRequest.cs:1023中的System.Net.HttpWebRequest.EndGetResponse(System.IAsyncResult asyncResult asyncResult)[0x0005e]
    在System.Threading.Tasks.TaskFactory`1[TResult].FromAsyncCoreLogic(System.IAsyncResult iar,System.Func`2[T,TResult]endFunction,System.Action`1[T]endAction,System.Threading.Tasks.Task`1[TResult]promise,System.Boolean requiresSynchronization)[0x00014]在/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/threading/Tasks/FutureFactory.cs:550中
    ---来自引发异常的上一个位置的堆栈结束跟踪---
    在/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/System/Runtime/ExceptionServices/ExceptionServices/exceptionservicescommon.cs:143中的System.Runtime.ExceptionDispatchInfo.Throw()[0x0000c]
    在/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/System/Runtime/CompilerServices/taskwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)[0x00047]
    在/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/System/Runtime/CompilerServices/taskwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)[0x0002e]中的System.Runtime.CompilerServices/Taskwaiter.cs:156
    在/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/System/Runtime/CompilerServices/TaskAwaiter.cs:128中的System.Runtime.CompilerServices.taskwaiter.ValidateEnd(System.Threading.Tasks.Task任务)[0x0000b]
    在/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/System/Runtime/CompilerServices/TaskAwaiter.cs:535中的System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult()[0x00000]
    在/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System.Net.Http/System.Net/System.Net.Http/System.Net.Http/HttpClientHandler.cs:379中的System.Net.Http.HttpClientHandler+c_uasync0.MoveNext()[0x003ce]
    ---来自引发异常的上一个位置的堆栈结束跟踪---
    在/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/System/Runtime/ExceptionServices/ExceptionServices/exceptionservicescommon.cs:143中的System.Runtime.ExceptionDispatchInfo.Throw()[0x0000c]
    在/Users/builder/data/lanes/3511/77cb8568/source中的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task任务)[0x00047]处