相关疑难解决方法(0)

SignalR +通过操作方法向Hub发送消息

我正在使用SignalR的中心功能(https://github.com/SignalR/SignalR)向所有订阅的客户端发布消息:

public class NewsFeedHub : Hub
public void Send(string channel, string content)
{
    Clients[channel].addMessage(content);
}
Run Code Online (Sandbox Code Playgroud)

这通过Javascript调用"发送"时工作正常,但我也希望Web应用程序发布消息(来自ASP.NET MVC操作方法).我已经尝试实例化新对象ob NewsFeedHub并调用Send方法,但这会导致错误(因为未设置Hub的基础"连接").有没有办法在没有连接的情况下使用Hub?

asp.net-mvc message action signalr signalr-hub

64
推荐指数
4
解决办法
6万
查看次数

SignalR + Autofac + OWIN:为什么GlobalHost.ConnectionManager.GetHubContext不起作用?

我正在尝试在单个项目中使用OWIN,SignalR和Autofac.

我正在设置有关signalR的内容如下:

       // Create the AutoFac container builder:
        var builder = new ContainerBuilder();

        // ...[Register various other things in here]...

        // register signalR Hubs
        builder.RegisterHubs(Assembly.GetExecutingAssembly());

        // Build the container:
        var container = builder.Build();

        // Configure SignalR with the dependency resolver.
        app.MapSignalR(new HubConfiguration
        {
            Resolver =  new AutofacDependencyResolver(container)
        });
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我使用Autofac SignalR集成时,我不能再在服务器上获取signalR Hub Context(例如在webapi控制器中),因此无法从服务器端向连接的客户端发送消息.当我不使用Autofac signalR集成时,如下所示:

var hubContext = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
hubContext.Clients.All.notification("Test Message");
Run Code Online (Sandbox Code Playgroud)

但是当我将Autofac添加到混合中时,这不起作用 - 我没有得到任何错误消息,我似乎得到了一个hubContext,但是对它的调用实际上似乎并没有到达客户端.

如果我在对MapSignalR的调用中注释掉了对signalR的依赖性解析器的使用,那么对GetHubContext的调用再次起作用并且消息成功地到达signalR客户端,但当然我不能再在我的集线器上使用IoC.例如

        // Configure SignalR with the dependency resolver.
        app.MapSignalR(new HubConfiguration
        {
            // Resolver =  new AutofacDependencyResolver(container)
        });
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么使用AutofacDependencyResolver会阻止GlobalHost.ConnectionManager.GetHubContext正常工作? …

asp.net autofac signalr owin

29
推荐指数
1
解决办法
7962
查看次数

无法在HubConfiguration中将DependencyResolver传递给MapSignalR

我有一个MVC 4应用程序,我正在使用SignalR和依赖注入框架.因此,我需要实现自定义DependencyResolver.为了连线,我正在使用

        var resolver = new CustomSignalRDependencyResolver(...);
        GlobalHost.DependencyResolver = resolver;
        app.MapSignalR();
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作.但是,如果我使用这样的HubConfiguration对象:

        var resolver = new CustomSignalRDependencyResolver(...);
        app.MapSignalR(new HubConfiguration(
            {
                Resolver = resolver
            });
Run Code Online (Sandbox Code Playgroud)

一切似乎都有效(对象正确连线,没有任何错误或警告)但远程方法不再被调用.有人可以解释第一种和第二种方法之间的区别吗?

signalr

3
推荐指数
1
解决办法
1559
查看次数

标签 统计

signalr ×3

action ×1

asp.net ×1

asp.net-mvc ×1

autofac ×1

message ×1

owin ×1

signalr-hub ×1