javascript - SignalR 异常记录?

标签 javascript signalr signalr-hub

这更多是两个问题,但是:

  • 为我的 Hub 提供顶级异常处理程序的最佳方式是什么?当前版本的 SignalR
  • 似乎不可能
  • 当我在集线器中抛出错误时,为什么这实际上对客户端没有任何作用?

    $.connection.hub.error(function() {
    返回警报(“测试”);
    });

  • 当我调试时,我可以看到我的错误方法正在连接,但是当我在集线器上抛出异常时,我可以看到从来没有尝试调用我在上面设置的方法。唯一发生的事情是 SignalR 将错误发送到控制台。

    作为记录,我可以很好地连接其他事件
    //Called during exceptions just fine 
    $.connection.hub.received(function() {
      return alert("Received Data");
    });
    
    //Seems to do nothing?
    $.connection.hub.error(function() {
      return alert("Received Exception");
    });
    

    最佳答案

    $.connection.hub.error用于处理集线器连接故障。您可以使用 jQuery 的 deferred.fail() 来处理从特定集线器调用 ( $.connection.hub.methodThatThrows().fail(function() { ... } ) 引发的异常,但这显然不能处理从任何调用引发的异常。

    SignalR v1.0.0 将增加对 IHubPipelineModules 的支持.然后您将能够覆盖HubPipelineModule.BuildIncomingHubPipelineModule.OnIncomingError然后可以将其添加到 HubPipeline通过 GlobalHost.HubPipeline.AddModule(myHubPipelineModule) .

    https://github.com/SignalR/SignalR/issues/548

    https://github.com/SignalR/SignalR/commit/83fdbfd9baa1f1cc3399d7f210cb062597c8084c

    示例实现:

    using Microsoft.AspNet.SignalR.Hubs;
    
    public class MyHubPipelineModule : HubPipelineModule
    {
        protected override void OnIncomingError(ExceptionContext exceptionContext,
                                                IHubIncomingInvokerContext invokerContext)
        {
            dynamic caller = invokerContext.Hub.Clients.Caller;
            caller.ExceptionHandler(exceptionContext.Error.Message);
        }
    }
    
    protected void Application_Start()
    {
        GlobalHost.HubPipeline.AddModule(new MyHubPipelineModule());
    }
    
    // JS
    // hub.client is also introduced in SignalR v1.0.0
    $.connection.myHub.client.exceptionHandler = function (message) {
        alert(message);
    };
    

    关于javascript - SignalR 异常记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12608874/

    相关文章:

    asp.net - SignalR 调用服务器方法在 VS 中本地工作,但在 IIS 7.5 中不工作

    javascript - 有条件的 setTimeout 调用

    c# - Signalr Bearer token 认证

    SignalR - 客户端连接的传输方法的可能值

    windows-7 - SignalR .NET Client在Windows 7上不支持WebSockets

    c# - 何时调用 SignalR 集线器构造函数?

    javascript - 无法从React上传图像以使用Multer表达API

    javascript - React 类不渲染

    javascript - chrome 获取 Http Response 的问题

    asp.net - SignalR 不在本地 IIS 上工作,但在 IIS Express 上工作