【问题标题】:Signalr Xamarin Client Unhandled Error on HubConnection.Start()HubConnection.Start() 上的 Signalr Xamarin 客户端未处理错误
【发布时间】: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


【解决方案1】:

确保您传递给 HubConnection 的 URL 是集线器的 URL。

您传递的是 "http://websiteurl/chatapp/" - 您确定这是中心的 URL 而不是网站的 URL?

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-17
  • 2018-02-10
相关资源
最近更新 更多