繁体   English   中英

在SignalR集线器内部检索UserID时出现问题

[英]Issue retrieving UserID inside SignalR hub

我在强制每个连接的客户端进行客户端更新时运行了SignalR私人聊天系统,但我想简化此流程,因此仅在特定的连接用户专门接收新消息时才对其进行更新。 使用msdn上发布的“将SignalR用户映射为连接”,我进行了所有设置,它记录并更改了连接ID和用户,但是只要我想为我的Sql查询检索其关联的UserID,我就会得到Null吗?

如上所述,当我使用HTTPContext.User.Identity.GetUserId()检索用户GUID时,查询工作正常,但是现在我更新了代码,无论我做什么都无法再获取当前连接的UsersID。 即使关联的数据库功能在检索当前用户UserName时都没有问题...

public override Task OnConnected()
{
var name = Context.User.Identity.Name;
who = Context.User.Identity.Name;
UserID = Context.User.Identity.GetUserId();
.....
}

string query = "SELECT msgTo, msgFrom, msgContent, date FROM [dbo].[messages] WHERE msgTo = @id";
connection.Open();
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@id", UserID);
try
{
  ...
}

参数化查询'(@id nvarchar(4000))SELECT msgTo,msgFrom,msgContent,日期FRO'需要未提供的参数'@id'。

我设法通过发送每个请求的查询字符串来修复它($ .connection.hub.qs = {userId:document.getElementById(“ usrid”)。value};),然后在集线器更新功能中检索它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM