C# Windows 10更新后的.NET远程处理字符串比较行为
我有一个.NET远程处理客户端/服务器应用程序,其中我的远程对象有一个返回字典的方法,如下所示:C# Windows 10更新后的.NET远程处理字符串比较行为,c#,remoting,C#,Remoting,我有一个.NET远程处理客户端/服务器应用程序,其中我的远程对象有一个返回字典的方法,如下所示: public Dictionary<string, string> Test() { Dictionary<string, string> d = new Dictionary<string, string>(StringComparer.CurrentCultureIgnoreCase); d.Add("name"
public Dictionary<string, string> Test()
{
Dictionary<string, string> d = new Dictionary<string, string>(StringComparer.CurrentCultureIgnoreCase);
d.Add("name", "test");
return d;
}
公共字典测试()
{
字典d=新字典(StringComparer.CurrentCultureInoRecase);
d、 添加(“名称”、“测试”);
返回d;
}
当此远程方法由运行Windows 10并带有更新1709(秋季创建者更新)的客户端计算机调用时,密钥查找不再不区分大小写,即ContainsKey(“Name”)返回false
在更新1709之前或更新1709被恢复之前,情况并非如此。此外,如果字符串比较器更改为StringComparer.OrdinalIgnoreCase(仅更改服务器端),ContainsKey(“名称”)将返回true
客户端和服务器都使用相同的区域和语言设置(英语)。此Windows更新中是否有更改导致此行为?这可能适合您
public Dictionary<string, string> Test()
{
Dictionary<string, string> d = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
d.Add("name", "test");
return d;
}
公共字典测试()
{
字典d=新字典(StringComparer.InvariantCultureInogoreCase);
d、 添加(“名称”、“测试”);
返回d;
}
客户端和服务器使用的是什么区域/语言设置?@Matthew Watson都在使用en IE(英语爱尔兰)。我能想到的唯一一件可能与之有点关联的事情是在.Net 4.6中,任务
的默认区域设置更改为调用线程的区域设置,但我认为这与此无关。OP显然已经了解如何解决这个问题,正如他们在问题中所述。他们要问的是,是什么改变了以前的工作代码,使其无法工作。