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”上的附加计算机”。因此,我的虚拟机具有类
Xamarin.Android
客户端连接到ASP.NET服务器中的ConnectionHub
以下是我迄今为止所做的工作:
applicationhost.config
中添加了绑定,并重新启动了vm和macbook。重新打开所有内容,使用浏览器我可以连接并从10.0.1.56:642发送消息。同样,使用常规浏览器。我可以从虚拟机甚至Macbook上做到这一点!但后来我尝试了Xamarin.Android,但失败了方法:
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]处