我在单声道的 MVC3 中运行 SignalR 时遇到问题。
我创建了以下集线器:
    公共类 TestHub : 集线器
    {
      公共覆盖任务 OnConnected()
      {
        Trace.WriteLine(String.Format("加入组:{0}", Context.User.Identity.Name), "SignalR.General");
        任务 addTask = Groups.Add(Context.ConnectionId, Context.User.Identity.Name);
        返回添加任务;
      }
      公共无效加入组(字符串组)
      {
        Trace.WriteLine(String.Format("加入 Group2: {0}", Context.User.Identity.Name), "SignalR.General");
        Groups.Add(Context.ConnectionId, group);
      }
      公共无效回声(字符串组,字符串值)
      {
        Trace.WriteLine(String.Format("Echo: {0}, {1}", group, value), "SignalR.General");
        Clients.Group(group).echo(value);
      }
    }
主要问题如下:
用户通过 Forms auth 登录,并且他们的姓名在 Context.User.Identity.Name 中正确找到。当客户端连接时,将调用 OnConnected 并将连接添加到与用户名同名的单个用户组中。当我以组名作为用户名从客户端调用 Echo 函数时,如果我在 IIS 中托管但在 mono 中托管时没有响应,我会得到正确的响应(响应发送到客户端) 。
另一方面,如果我首先从客户端调用 JoinGroup,它可以在 IIS 和 Apache 上运行。向 Clients.All 发送消息也适用于 IIS 和单声道,但我需要消息仅针对特定用户到达。
我尝试了此代码的不同变体,但不知道为什么组注册不应该在 OnConnected 中工作。
任何想法都将不胜感激,因为我已经在这个问题上浪费了 2 天时间。