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

时间:2016-06-25 10:41:50

标签: c# asp.net signalr

我在我的应用程序中使用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>

我的中心课程如下:

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>

在Global.asax类文件中,我还添加了以下代码:

RouteTable.Routes.MapHubs();

当我启动应用程序时,这是我得到的错误:

  

错误CS0619'InformationRRouteExtensions.MapHubs(RouteCollection)'是   过时的:'在Owin Startup类中使用IAppBuilder.MapSignalR。看到   http://go.microsoft.com/fwlink/?LinkId=320578了解更多详情

1 个答案:

答案 0 :(得分:0)

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

 $.connection.hubclass

或添加到集线器类名称属性

[HubName("Hubclass")]

并且你也不需要通过RouteTable设置信号器路由.Routes.MapHubs owin中间件将为你处理路由......

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

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