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。调用这两种通信模型的语法在客户端代码中是不同的。如果您在服务器代码中添加了集线器,请确认您的所有客户端代码都使用正确的集线器语法。