信号r中Chat hub类中的空引用异常

时间:2015-03-12 14:15:48

标签: c# signalr nullreferenceexception signalr-hub signalr.client

我在信号r mvc工作.. 和通过集线器连接未创建我的集线器代码是

public class ChatHub : Hub
{
    private readonly static ConnectionMapping<string> _connections =
        new ConnectionMapping<string>();

    public void SendChatMessage(string who)
    {
        string name = Context.User.Identity.Name;
        Clients.User(who).addChatMessage();
    }

    public override Task OnConnected()
    {
        string name = Context.User.Identity.Name;

        _connections.Add(name, Context.ConnectionId);
         Debug.Write("Shubham Conected");
        return base.OnConnected();
    }

    public override Task OnDisconnected(bool stopCalled)
    {
        string name = Context.User.Identity.Name;

        _connections.Remove(name, Context.ConnectionId);
        Debug.Write("Shubham now Disconnected");
        return base.OnDisconnected(stopCalled);
    }

    public override Task OnReconnected()
    {
        string name = Context.User.Identity.Name;

        if (!_connections.GetConnections(name).Contains(Context.ConnectionId))
        {
            _connections.Add(name, Context.ConnectionId);
        }
        Debug.Write("Shubham Reconnected");
        return base.OnReconnected();
    }


    public void SendChatMessage(string who, string message)
    {
        string name = Context.User.Identity.Name;
        Debug.Write("Shubham inside the send");
        Clients.Group(who).addChatMessage(name + ": " + message);
    }


} 

当我在visual studio 2013中以调试模式执行它时,它会抛出异常

Context.User.Identity.Name; null reference exception.

我不知道如何解决这个问题。 当我在控制器中使用此语句时,此代码返回userId

1 个答案:

答案 0 :(得分:1)

请问您能告诉我您使用的身份验证模式,我的意思是您是以编程方式设置上下文还是通过IIS使用Windows身份验证。

首先检查您的MVC应用程序中的身份验证步骤应该在SignalR配置之前

public partial class Startup
{
    public void Configuration(IAppBuilder app)
    {
        ConfigureAuth(app);
        app.MapSignalR();
    }
}