.Net Framework,WebApi和SignalR

时间:2019-03-01 11:18:48

标签: asp.net-web-api2 signalr

我在VS2017中创建了一个ASP.NET Web应用程序(.Net Framework),我选择了一个Empty项目并选中了Web API复选框。我不要MVC。我从Nuget Microsoft.AspNet.SignalR安装。一切都很好。然后我

  1. 添加一个OWIN Startup类,并添加以下行:app.MapSignalR();在配置方法中。

    using Microsoft.Owin;
    using Owin;
    
    [assembly: OwinStartup(typeof(WebApplication4.Startup))]
    
    namespace WebApplication4
    {
        public class Startup
        {
            public void Configuration(IAppBuilder app)
            {
                app.MapSignalR();
            }
        }
    }
    
  2. 我用一个Activate方法创建了一个名为MyTestHub的集线器。

    using Microsoft.AspNet.SignalR;
    
    namespace WebApplication4
    {
        public class MyTestHub : Hub
        {
            public string Activate()
            {
                return "Monitor Activated";
            }
        }
    }
    
  3. 我创建一个html页面进行以下测试:

    <script src="Scripts/jquery-1.6.4.min.js"></script>
    <script src="Scripts/jquery.signalR-2.2.2.js"></script>
    <script src="signalr/hubs" type="text/javascript"></script>
    
    <script type="text/javascript">
        $(function () {
    
            var notificationHub = $.connection.myTestHub;
    
            $.connection.hub.start(function () {
    
                notificationHub.activate(function (response) {
    
                    console.log("response", response);
                });
            });
        });
    </script>
    

创建集线器,$。connection.hub.start很好,但是notificationHub.activate返回“对象不支持属性或方法'activate'”。我在notificationHub上找不到该功能,但在notificationHub.server上却找到了该功能。但是,调用notificationHub.server.activate不会执行任何操作。

我已经尝试了SingnalR和2.2.2的最新稳定版本(作为示例项目),但是没有任何效果。 signalr / hibs还可以。

有什么想法吗?我所看到的所有示例基本上都可以做到这一点,但是我无法使其正常工作。

1 个答案:

答案 0 :(得分:0)

找到答案

                notificationHub.server.activate().done(function (response) {

                    console.log("response", response);
                });