C# 如何从Xamarin客户端连接到SignalR服务器?
(**)我创建了一个ASP.NET web服务器,托管SignalR hub。我跟着 辅导的它起作用了。然后我创建了一个Xamarin.Android客户端(*)。问题是我无法连接到服务器。我想,我无法连接,因为我的主机地址中有“localhost”。这个例外相当大 如果我的怀疑是正确的,我该如何解决?如何使localhost看起来像普通服务器 (*)-我也试过使用Xamarin.Forms (**)-请看问题底部的“编辑” 这是我的方法:C# 如何从Xamarin客户端连接到SignalR服务器?,c#,asp.net,xamarin,xamarin.android,signalr,C#,Asp.net,Xamarin,Xamarin.android,Signalr,(**)我创建了一个ASP.NET web服务器,托管SignalR hub。我跟着 辅导的它起作用了。然后我创建了一个Xamarin.Android客户端(*)。问题是我无法连接到服务器。我想,我无法连接,因为我的主机地址中有“localhost”。这个例外相当大 如果我的怀疑是正确的,我该如何解决?如何使localhost看起来像普通服务器 (*)-我也试过使用Xamarin.Forms (**)-请看问题底部的“编辑” 这是我的方法: protected override void
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)
{
}
};
}
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://localhost:64642");
var chatHubProxy=hubConnection.CreateHubProxy(“ChatHub”);
尝试
{
//启动连接
等待连接。开始();
//在服务器上调用“UpdateNick”方法
等待chatHubProxy.Invoke(“发送”,新对象[]{“TheMessage”,“JohnDoe”});
}
捕获(例外情况除外)
{
}
};
}
{System.Net.WebException:错误:ConnectFailure(连接被拒绝)
--->System.Net.Sockets.SocketException:在System.Net.Sockets.Socket.Connect(System.Net.EndPoint remoteEP)拒绝连接
[0x000cb]英寸
/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System/System.Net.Sockets/Socket.cs:1313
在System.Net.WebConnection.Connect(System.Net.HttpWebRequest
请求中的[0x0019b]
/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System/System.Net/WebConnection.cs:195
---内部异常堆栈跟踪结束---位于System.Net.HttpWebRequest.EndGetResponse(System.IAsyncResult
异步结果)[0x0005e]输入
/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System/System.Net/HttpWebRequest.cs:1023
位于System.Threading.Tasks.TaskFactory1[TResult].FromAsyncCoreLogic
(System.IAsyncResult iar,System.Func
2[T,TResult]endFunction,
System.Action1[T]endAction,System.Threading.Tasks.Task
1[TResult]
promise,System.Boolean要求同步)[0x00014]输入
/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/threading/Tasks/FutureFactory.cs:550
---来自引发异常的上一个位置的堆栈结束跟踪---在
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
[0x0000c]英寸
/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143
在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess
中的(System.Threading.Tasks.Task任务)[0x00047]
/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187
在
System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification
(System.Threading.Tasks.Task任务)[0x0002e]中的
/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156
在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:128
在
System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult
()[0x00000]英寸
/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:535
在System.Net.Http.HttpClientHandler+c_uasync0.MoveNext()上
[0x003ce]英寸
/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System.Net.Http/System.Net.Http/HttpClientHandler.cs:379
---来自引发异常的上一个位置的堆栈结束跟踪---在
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
[0x0000c]英寸
/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143
在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess
中的(System.Threading.Tasks.Task任务)[0x00047]
/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187
在
System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification
(System.Threading.Tasks.Task任务)[0x0002e]中的
/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156
在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:128
在
System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult
()[0x00000]英寸
/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:535
在System.Net.Http.HttpClient+c_uuasync0.MoveNext()上
[0x000a9]英寸
/Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System.Net.Http/System.Net.Http/HttpClient.cs:276
---来自上一个异常位置的堆栈结束跟踪