某些语言的SignalR客户端调用失败

时间:2015-11-13 13:07:10

标签: javascript c# asp.net asp.net-mvc signalr

我一直在为客户开发一个项目,并且将SignalR集成到系统中有很多乐趣。

一切似乎都运行良好,客户对SignalR如何为其应用提供真实的实时反馈感到非常兴奋。

在大多数情况下,一切都在游动,但是我遇到了一个奇怪的问题,我根本无法确定。

以下语言环境的一切都很有用:

  1. 的en-US
  2. 烯GB
  3. NL
  4. 然而,这些语言根本不会从集线器获得回调:

    1. FR
    2. ES
    3. en-ZW - 我们使用英语津巴布韦来检查所有字符串是否被翻译。
    4. 我可以直接执行代码直到Clients.Client(ConnectionId).update(Result);(其中ConnectionId是正确的连接ID,而Result是准备序列化的对象,前四种语言完美无瑕,我得到了我的Javascript方法与预期的产出。

      然而,在最后四种语言中,该方法被触发,但没有任何东西通过另一方。没有。拉链。

      如果我用默认的Strings.resx替换Strings.fr.resx文件,那么我的网站按预期运行,但由于Strings.en-ZW.resx文件与Strings.resx相同(只有每个字符串都包含在[()])我怀疑这是个问题。我也尝试使用fr语言环境删除所有unicode翻译(`,é,â等),但这没有帮助。

      我现在已经过了将近一整天了,发现没有任何迹象表明这个问题,而且en工作得很好,en-ZW并没有让我感到困惑。

      有人有任何建议吗?

      Hub方法:

      public class ClientHub : Hub
      {
          [...]
      
          protected void UpdateRecords(List<Int32> ChangedValues) 
          {
              using (var database = new DbContext())
              {
                  foreach (Record R in database.Records.Where(Rc => ChangedValues.Contains(Rc.Id))
                  {
                      SignalRFormattedRecord Serialized = new SignalRFormattedRecord(Record);
      
                      foreach (SavedFilter Filter in SavedFilters.ByRecord(Record))
                      {
                          // Next line is always called.
                          Clients.Client(Filter.ConnectionId).updateRow(Serialized);
                      }
                  }
              }
          }
      
          [...]
      }
      

      使用Javascript:

      $.connection.clientHub.updateRow = function(value) {
          debugger;
          // update code works in all languages except FR, DE, ES and en-ZW.
      }
      
      $.connection.start();
      

1 个答案:

答案 0 :(得分:2)

事实证明,过滤系统本身并不是语言不可知的,而且由于调试过程中的悬空连接而导致误报。

我现在觉得很蠢。