【问题标题】:SignalR client calls fail for certain languages某些语言的 SignalR 客户端调用失败
【发布时间】:2016-02-15 01:49:12
【问题描述】:

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

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

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

一切都适用于以下语言环境:

  1. zh-CN
  2. zh-CN
  3. nl

但是,这些语言根本不会从中心获得回调:

  1. 法国
  2. es
  3. en-ZW - 我们使用英语津巴布韦检查所有字符串是否已翻译。

我可以单步执行代码直到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 并没有真正让我感到困惑。

有人有什么建议吗?

集线器方法:

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();

【问题讨论】:

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


    【解决方案1】:

    事实证明,过滤系统与语言无关,并且在调试期间由于悬空连接而出现误报。

    我现在觉得自己很傻。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      相关资源
      最近更新 更多