我能在SignalR Hub中调试OnConnected方法吗?

3

我在我的asp.net项目中有一个Hub,我重写了OnConnected方法,我能够在OnConnected方法中调试代码吗?我设置了断点但它没有触发。

    public class ConsultasHub : Hub
    {                    
        public override Task OnConnected()
        {
            //breakpoint here
            //some code
            //[...]
            return base.OnConnected();
        }

    }
}

设置一个断点并刷新页面以建立连接。 - chenZ
1个回答

10

这是一个棘手的问题。按照设计,如果您没有订阅中心,则客户端无法从服务器获取任何消息,因此 OnConnected 不会被调用。 我尝试了以下方法:

using System;
using System.Web;
using Microsoft.AspNet.SignalR;
using System.Web.Script.Serialization;
using System.Collections.Generic;
using System.Threading.Tasks;

public class ConsultasHub : Hub {
    public override Task OnConnected() {
        //breakpoint here
        //some code
        //[...]
        return base.OnConnected();
    }
}

电话:

var chat = $.connection.consultasHub;

console.log("connecting...");
$.connection.hub.start().done(function () {
    console.log("done.");
});

OnConnected事件没有触发,控制台消息打印了“done.”。

但是,一旦我有了一个事件和一个订阅,

using System;
using System.Web;
using Microsoft.AspNet.SignalR;
using System.Web.Script.Serialization;
using System.Collections.Generic;
using System.Threading.Tasks;

public class ConsultasHub : Hub {
    public override Task OnConnected() {
        //breakpoint here
        //some code
        //[...]
        return base.OnConnected();
    }

    public void SendMessage( string message ) {
        Clients.All.message(message);
    }
}   
var chat = $.connection.consultasHub;
chat.client.message = function (message) {
    console.log("message: " + message);
};

console.log("connecting...");
$.connection.hub.start().done(function () {
    console.log("done.");
});

OnConnected被触发(断点已达到)。试一下吧!希望有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接