.net core ';HubCallerContext';不包含';请求';singnalr.netcore
我正在使用.NETCore3.0和Angular 8的信号器.net core ';HubCallerContext';不包含';请求';singnalr.netcore,.net-core,signalr,signalr-hub,.net Core,Signalr,Signalr Hub,我正在使用.NETCore3.0和Angular 8的信号器 public class ConnectionHub : Hub { public ConnectionHub() { } public override async Task OnConnectedAsync() { //get userName, token and other stuff await base.OnConnectedAsync();
public class ConnectionHub : Hub
{
public ConnectionHub()
{
}
public override async Task OnConnectedAsync()
{
//get userName, token and other stuff
await base.OnConnectedAsync();
}
public override async Task OnDisconnectedAsync(Exception exception)
{
await base.OnDisconnectedAsync(exception);
}
}
在startup.cs中添加:
app.UseSignalR(options =>
{
options.MapHub<ConnectionHub>("/ConnectionHub");
});
我想访问在查询参数中发送的自定义数据,但在OnConnectedAsync中,上下文如下所示:
如何访问OnConnectedAsync()方法中的查询参数。
说我可以使用Context.Request,但在OnConnectedAsync
中说'HubCallerContext'不包含'Request'的定义我找到了解决方案
Hub继承ConnectionHub
Context.GetHttpContext().request获取请求对象
public class ConnectionHub: Hub<IHubClients>
{
public ConnectionHub()
{
}
public override async Task OnConnectedAsync()
{
//get userName, token and other stuff
var userName = Context.GetHttpContext().Request.Query["userName"];
await base.OnConnectedAsync();
}
public override async Task OnDisconnectedAsync(Exception exception)
{
await base.OnDisconnectedAsync(exception);
}
}
公共类连接集线器:集线器
{
公共连接中心()
{
}
公共覆盖异步任务OnConnectedAsync()
{
//获取用户名、令牌和其他内容
var userName=Context.GetHttpContext().Request.Query[“userName”];
等待base.OnConnectedAsync();
}
公共覆盖异步任务OnDisconnectedAsync(异常)
{
等待base.OnDisconnectedAsync(异常);
}
}
我找到了解决方案
Hub继承ConnectionHub
Context.GetHttpContext().request获取请求对象
public class ConnectionHub: Hub<IHubClients>
{
public ConnectionHub()
{
}
public override async Task OnConnectedAsync()
{
//get userName, token and other stuff
var userName = Context.GetHttpContext().Request.Query["userName"];
await base.OnConnectedAsync();
}
public override async Task OnDisconnectedAsync(Exception exception)
{
await base.OnDisconnectedAsync(exception);
}
}
公共类连接集线器:集线器
{
公共连接中心()
{
}
公共覆盖异步任务OnConnectedAsync()
{
//获取用户名、令牌和其他内容
var userName=Context.GetHttpContext().Request.Query[“userName”];
等待base.OnConnectedAsync();
}
公共覆盖异步任务OnDisconnectedAsync(异常)
{
等待base.OnDisconnectedAsync(异常);
}
}
在Hub
类的重写方法中是否有使用异步的参考?我找不到以这种方式做这件事的任何参考资料。Hub
类似乎没有定义任何异步方法。我有一种感觉,您从未向基类返回任何内容,因此上下文中没有请求。文档显示您需要返回对基类方法的调用return base.OnConnected()代码>。从您提供的示例来看,我看起来并不是在重写Hub
类中的任何方法。除非我在文档或API参考中遗漏了什么。事实上,看起来任何东西都不会被发送回客户机。我建议再次查看文档并检查API引用,以查看Hub
类中定义的方法,这样您就可以正确地重写它们并完成返回到客户端的循环。您是否有在Hub
类的重写方法中使用async的参考?我找不到以这种方式做这件事的任何参考资料。Hub
类似乎没有定义任何异步方法。我有一种感觉,您从未向基类返回任何内容,因此上下文中没有请求。文档显示您需要返回对基类方法的调用return base.OnConnected()代码>。从您提供的示例来看,我看起来并不是在重写Hub
类中的任何方法。除非我在文档或API参考中遗漏了什么。事实上,看起来任何东西都不会被发送回客户机。我建议您再次查看文档并检查API引用,以查看Hub
类中定义的方法,这样您就可以正确地重写它们并完成返回客户机的循环。