首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取HubContext实例,以便在SelfHosted Asp.net核心应用程序的任何位置重用

获取HubContext实例,以便在SelfHosted Asp.net核心应用程序的任何位置重用
EN

Stack Overflow用户
提问于 2019-05-21 04:16:24
回答 1查看 404关注 0票数 0

我有一个自我托管的asp.net核心应用程序在控制台上工作。我可以从我的c# windows窗体客户端发送消息。但我希望将消息发送到服务器类中的任何位置。不是一次消息。所以我需要hubcontext实例来重用它。

我已经使用了IHubContext实现,但是当我使用集线器上下文时,我得到了NullReference异常。

这是我的中心。

代码语言:javascript
复制
 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);
    }

}

这是我的启动课

代码语言:javascript
复制
   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类

代码语言:javascript
复制
 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

代码语言:javascript
复制
  MyHubHelper helper = new MyHubHelper();
  helper.SendOutAlert("Hi from server!");
EN

回答 1

Stack Overflow用户

发布于 2019-05-21 04:53:36

Program.cs中,您可以像下面这样使用:

代码语言:javascript
复制
public class Program
{
    public static void Main(string[] args)
    {
        var host = CreateWebHostBuilder(args)
                    .Build();

        using (var scope = host.Services.CreateScope())
        {
            var services = scope.ServiceProvider;
            var helper = services.GetRequiredService<MyHubHelper>();
            helper.SendOutAlert("Hi from server!");
        }

        host.Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56227613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档