我跟着一个信号器样本,并在服务器上运行了一个运行signlar的网页。我现在正在尝试将Android(Xamarin)客户端连接到同一服务器,但在调用connection.Start()时会收到Unhandled Exception。
这是我知道的信号器中心,因为网页成功调用它。
using Microsoft.AspNet.SignalR;
namespace WebApplication.Hubs
{
public class MyHub : Hub
{
public void SendNow(string name, string message)
{
Clients.All.displayMessage(name, message);
}
}
}
我的Android类试图连接到此Hub但失败了。
using System.Threading;
using System.Threading.Tasks;
using Android.Widget;
using Microsoft.AspNet.SignalR.Client;
class SignalClient
{
private HubConnection _connection;
private IHubProxy _proxy;
private TextView BoxView;
private string _user;
public SignalClient(string user, TextView outputBox)
{
BoxView = outputBox;
_user = user;
}
public async Task Connect()
{
_connection = new HubConnection("http://websiteurl/chatapp/");
_proxy = _connection.CreateHubProxy("MyHub");
_proxy.On("displayMessage", (string user, string message) =>
{
SynchronizationContext.Current.Post(delegate
{
BoxView.Text += ("{0}: {1}\n", user, message);
}, null);
});
await _connection.Start(); //<- Unhandled Exception
await Send("Connected");
}
public Task Send(string message)
{
return _proxy.Invoke("SendNow", _user, message);
}
}
我已经尝试了我能想到的所有网址变体。从基础网站网址中添加我发布的子域名,以及最后使用signalr /的两种变体。
被困在这里几天......非常感谢任何帮助或指导。
感谢。
编辑1:这是调用堆栈
0xFFFFFFFFFFFFFFFF in System.Diagnostics.Debugger.Mono_UnhandledException_internal C#
0x1 in System.Diagnostics.Debugger.Mono_UnhandledException C#
0x20 in object.7424197e-7e83-40fd-ba05-2908dff2d689 C#
0x12 in System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw C#
0x6 in System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0 C#
0xC in Android.App.SyncContext. C#
0xE in Java.Lang.Thread.RunnableImplementor.Run C#
0x8 in Java.Lang.IRunnableInvoker.n_Run C#
0x11 in object.7424197e-7e83-40fd-ba05-2908dff2d689 C#
答案 0 :(得分:0)
确保您传递给HubConnection
的网址是该中心的网址。
您正在通过"http://websiteurl/chatapp/"
- 您确定这是集线器的网址而不是网站的网址吗?