【发布时间】:2017-06-18 16:27:17
【问题描述】:
我跟随了一个信号器示例,并获得了一个在服务器上运行 signallar 的网页。我现在正在尝试将 Android(Xamarin) 客户端连接到同一台服务器,但在调用 connection.Start() 时出现未处理的异常。
这是我的信号器中心,我知道它可以工作,因为网页成功调用它。
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);
}
}
我已经尝试了所有我能想到的 url 变体。从基本网站 url,添加我发布到的子域,以及最后带有 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#
【问题讨论】:
-
在您的问题中粘贴异常的堆栈跟踪。如果您没有得到堆栈跟踪,请将
await _connection.Start()调用包装在 try-catch 中 -
@xleon 这让我很困惑。除了 [外部代码] 中发生的错误之外,我无法获得更多信息。我认为这意味着错误发生在 Signalr 中,因为 url 错误。有什么方法可以获取更多关于发生的事情的信息?
-
您的服务器是在 IIS express 还是远程服务器上运行?
-
您确定不能通过 try-catch 捕获异常吗?
-
关于异常中缺少信息。尝试禁用“只是我的代码”:msdn.microsoft.com/en-us/library/…
标签: c# asp.net xamarin signalr