Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 信号器IUserIdProvider';由signalr框架调用的方法GetUserId_Javascript_Asp.net_Signalr_Signalr Hub - Fatal编程技术网

Javascript 信号器IUserIdProvider';由signalr框架调用的方法GetUserId

Javascript 信号器IUserIdProvider';由signalr框架调用的方法GetUserId,javascript,asp.net,signalr,signalr-hub,Javascript,Asp.net,Signalr,Signalr Hub,当我们有一个自定义IUserIdProvider时,SignalR框架何时调用GetUserId方法,如下所示: public class RealTimeNotificationsUserIdProvider : IUserIdProvider { public string GetUserId(IRequest request) { return request.QueryString["userId"]; } } ConnectionId到Use

当我们有一个自定义IUserIdProvider时,SignalR框架何时调用GetUserId方法,如下所示:

public class RealTimeNotificationsUserIdProvider : IUserIdProvider
{
    public string GetUserId(IRequest request)
    {
        return  request.QueryString["userId"];
    }
}
ConnectionId到UserId的映射是如何以及何时发生的,以下方法是如何工作的:

 Clients.User("1").notify(notificationsJson);

用户是否必须通过身份验证才能使用此功能?

用户无需通过身份验证即可使用自定义IUserIdProvider

但是,如果用户已通过身份验证,并且您没有在Signal的DependencyResolver中将默认的IUserIdProvider替换为您自己的,则客户端的用户id将等于其
IPrincipal.Identity.Name

客户端的连接id和用户id之间没有精确的映射,但当客户端使用SignalR连接时,它将在内部建立订阅,以接收发送到其连接id和用户id的消息。在建立每个SignalR连接时,将调用IUserIdProvider.GetUserId,所以信号员可以设置订阅