我有一个自我托管的asp.net核心应用程序在控制台上工作。我可以从我的c# windows窗体客户端发送消息。但我希望将消息发送到服务器类中的任何位置。不是一次消息。所以我需要hubcontext实例来重用它。
我已经使用了IHubContext实现,但是当我使用集线器上下文时,我得到了NullReference异常。
这是我的中心。
public class UniveraHub : Microsoft.AspNetCore.SignalR.Hub
{
public string GetConnectionId()
{
return Context.ConnectionId;
}
public async Task SendMessage(string message)
{
await Clients.All.SendAsync("ReceiveMessage", message);
}
}
这是我的启动课
public class Startup
{
public void Configure(IApplicationBuilder app)
{
app.UseSignalR(routes =>
{
routes.MapHub<UniveraHub>("/UniveraHub");
});
}
public void ConfigureServices(IServiceCollection services)
{
services.AddSignalR();
services.AddScoped<MyHubHelper>();
}
}
这是我的HubHelper类
public class MyHubHelper
{
private readonly IHubContext<UniveraHub> _hubContext;
public MyHubHelper(IHubContext<UniveraHub> hubContext)
{
_hubContext = hubContext;
}
public MyHubHelper()
{
}
public void SendOutAlert(string msg)
{
_hubContext.Clients.All.SendAsync("ReceivedMessage", msg);
}
}
我正在使用助手类向客户端发送消息的这个program.cs
MyHubHelper helper = new MyHubHelper();
helper.SendOutAlert("Hi from server!");
https://stackoverflow.com/questions/56227613
复制相似问题