我的Hub类没有使用信号R调用

本文关键字:信号 调用 Hub 我的 | 更新日期: 2023-09-27 17:51:19

我在我的应用程序中使用signalR。

客户端代码:

<script src="Scripts/jquery-1.6.4.js" type="text/javascript"></script>
    <script src="Scripts/jquery.signalR-2.2.0.js" type="text/javascript"></script>
    <script src="signalr/hubs" type="text/javascript"></script>
    <script type="text/javascript">
        var data = $.connection.Hubclass;
        alert(data); // data is undefine
    </script>

我的hub类如下

public class Hubclass :Hub
{
    public void getdata(string msg)
    {
        Clients.All.send(msg);
    }
}

我有启动类在Owin如下

 [assembly: OwinStartup(typeof(Startup1))]
    public class Startup1
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }
    }
这是我在web.config中使用的配置:
<appSettings>
    <add key="owin:appStartup" value="Startup1" />
  </appSettings>

在全局。在ax类文件中,我还添加了以下代码:

RouteTable.Routes.MapHubs();

当我启动应用程序时,我得到以下错误:

错误CS0619 'SignalRRouteExtensions.MapHubs(RouteCollection)'是使用IAppBuilder。MapSignalR在Owin Startup类中。看到http://go.microsoft.com/fwlink/?LinkId=320578查看详细信息

我的Hub类没有使用信号R调用

如果我没记错的话,客户端代理是驼峰式的(生成的或动态的),所以你应该使用

 $.connection.hubclass

或添加到集线器类名属性

[HubName("Hubclass")]

,你也不需要设置信号路由RouteTable.Routes.MapHubs自己的中间件会为你处理路由…

编辑:也许你可以检查你生成的代理是否通过信号/集线器请求正确下载,检查你的浏览器的网络选项卡。如果没有,则OWIN初始化可能有问题,也许您必须在appConfig中设置命名空间或友好名称以进行正确的启动类检测,检查启动检测

<add key="owin:appStartup" value="StartupDemo.ProductionStartup" />