某些语言的 SignalR 客户端调用失败
SignalR client calls fail for certain languages
我一直在为一个客户做一个项目,并且在将 SignalR 集成到系统中时获得了很多乐趣。
一切似乎都运行良好,客户对 SignalR 如何为他们的应用程序提供真正的实时反馈感到非常兴奋。
在大多数情况下,一切都进行得很顺利,但是我遇到了一个奇怪的问题,我根本无法确定。
以下语言环境一切正常:
- 美式
- zh-CN
- 它
- nl
然而,这些语言根本不会从中心获得回调:
- fr
- 德
- es
- en-ZW - 我们使用津巴布韦英语来检查所有字符串是否已翻译。
我可以单步执行代码直到 Clients.Client(ConnectionId).update(Result);
(其中 ConnectionId 是正确的连接 ID,Result 是准备好序列化的对象,前四种语言完美无缺,我得到了我的Javascript 具有预期输出的方法。
然而,在最后四种语言中,该方法被触发,但没有任何东西到达另一端。没有什么。邮编
如果我用默认 Strings.resx 替换 Strings.fr.resx 文件,那么我的站点将按预期运行,但由于 Strings.en-ZW.resx 文件与 Strings.resx(只有每个字符串都包含在 [()] 中)我怀疑这是问题所在。我还尝试使用删除了所有 unicode 翻译(`、é、â 等)的 fr 语言环境,但这没有帮助。
我已经研究了将近一整天了,没有发现任何可以表明问题的东西,事实上 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();
事实证明,过滤系统在它应该存在的地方并不是与语言无关的,而且由于调试期间的悬空连接,我得到了误报。
我现在觉得自己很傻
我一直在为一个客户做一个项目,并且在将 SignalR 集成到系统中时获得了很多乐趣。
一切似乎都运行良好,客户对 SignalR 如何为他们的应用程序提供真正的实时反馈感到非常兴奋。
在大多数情况下,一切都进行得很顺利,但是我遇到了一个奇怪的问题,我根本无法确定。
以下语言环境一切正常:
- 美式
- zh-CN
- 它
- nl
然而,这些语言根本不会从中心获得回调:
- fr
- 德
- es
- en-ZW - 我们使用津巴布韦英语来检查所有字符串是否已翻译。
我可以单步执行代码直到 Clients.Client(ConnectionId).update(Result);
(其中 ConnectionId 是正确的连接 ID,Result 是准备好序列化的对象,前四种语言完美无缺,我得到了我的Javascript 具有预期输出的方法。
然而,在最后四种语言中,该方法被触发,但没有任何东西到达另一端。没有什么。邮编
如果我用默认 Strings.resx 替换 Strings.fr.resx 文件,那么我的站点将按预期运行,但由于 Strings.en-ZW.resx 文件与 Strings.resx(只有每个字符串都包含在 [()] 中)我怀疑这是问题所在。我还尝试使用删除了所有 unicode 翻译(`、é、â 等)的 fr 语言环境,但这没有帮助。
我已经研究了将近一整天了,没有发现任何可以表明问题的东西,事实上 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();
事实证明,过滤系统在它应该存在的地方并不是与语言无关的,而且由于调试期间的悬空连接,我得到了误报。
我现在觉得自己很傻