【发布时间】:2021-11-30 11:17:04
【问题描述】:
我已经在我的 MVC 5 网站上设置了 Signalr,并且大部分都运行良好。例如,如果我尝试使用 Javascript 发送测试消息,效果会很好:
$.connection.hub.start().done(function () {
chat.server.send("Username", "This is a test message");
});
我在 Hub 中的 C# send 方法发送消息如下:
public void Send(string username, string message)
{
string name = Context.User.Identity.Name;
Clients.Group(username).getMessages("From: " + name + " - " + message);
}
当我尝试通过 C# 调用 Send 方法时出现问题,如下所示:
ChatHub ch = new ChatHub();
ch.Send("Username", "This is a test message");
在调试过程中命中方法时,Context对象为null,失败。
本质上,用户在 View 中发送消息,它点击一个控制器方法,该方法调用一个单独的帮助类中的通知方法,这个单独的类调用我的 Signalr Hub 的 Send 方法。
我是否需要在控制器中获取上下文,并将其传递给辅助类,然后再传递给 Hub?还是有更好的替代方法?
谢谢。
更新 我确实设法使用以下方法获取用户名:
string name = System.Web.HttpContext.Current.User.Identity.Name;
但是,即使我这样做了,它现在在遇到这一行时也会引发异常:
Clients.Group(username).getMessages("From: " + name + " - " + message);
所以我认为仅从 C#(不是从 Javascript)调用 Send 时存在上下文问题
【问题讨论】:
标签: asp.net-mvc-5 signalr