SignalR常见错误,故障排除

关键词:

SignalR在客户端和服务器之间调用方法失败常常是静默的(没有错误提示),本节介绍客户端和服务器之间的方法调用失败而没有有意义的错误消息的可能原因。在SignalR应用程序中,服务器没有关于客户端实现的方法的信息;当服务器调用客户端方法时,方法名称和参数数据发送给客户端,只有服务器指定的格式存在时才执行。如果在客户端上找不到匹配的方法,则什么都不会发生,服务器上也不会产生错误信息。

下面介绍几个初学者接触SignalR的常见错误

1.如果被调用方法的名称或签名与客户端上的适当方法不完全匹配,则调用将失败

验证服务器调用的方法名称是否与客户端上的方法名称匹配。此外,SignalR使用驼峰式方法创建集线器代理,这在JavaScript中是合适的,因此在服务器上称为SendMessage的方法在客户端代理中将被称为sendMessage。如果您在服务器端代码中使用HubName属性,请验证所使用的名称是否与用于在客户端上创建集线器的名称相匹配。如果您不使用HubName属性,请验证JavaScript客户端中集线器的名称是否为驼峰式,例如chatHub而不是ChatHub。

2.客户端上的重复方法名称

验证您的客户端上没有重复的方法,只有大小写不同。如果您的客户端应用程序有一个名为sendMessage的方法,请验证是否还有一个名为SendMessage的方法。

3.在客户端上缺少JSON解析器

SignalR需要一个JSON解析器来存在序列化服务器和客户端之间的调用。如果您的客户端没有内置的JSON解析器(如Internet Explorer 7),则需要在应用程序中包含一个解析器。您可以在这里下载JSON解析器。

4.混合集线器和PersistentConnection语法

SignalR使用两种通讯模式:Hubs和PersistentConnections。调用这两种通信模型的语法在客户端代码中是不同的。如果您在服务器代码中添加了集线器,请确认您的所有客户端代码都使用正确的集线器语法。


作者:songshizhao 发表于:2017-11-05T02:39:44 访问量:1013
评论 [发表评论]