Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF服务获得错误的文化_C#_Wcf_User Interface_Cultureinfo_Currentuiculture - Fatal编程技术网

C# WCF服务获得错误的文化

C# WCF服务获得错误的文化,c#,wcf,user-interface,cultureinfo,currentuiculture,C#,Wcf,User Interface,Cultureinfo,Currentuiculture,我有一个接受CultureInfo对象作为参数的服务方法。我想使用它从指定语言的资源中获取正确的字符串。因此,我有一种服务方法,如: public string GetTranslatedString(CultureInfo c) 在客户机上,我这样调用此方法: ServiceReference.GetTranslatedString(CultureInfo.CurrentUICulture); 我也试过: ServiceReference.GetTranslatedString((Cult

我有一个接受CultureInfo对象作为参数的服务方法。我想使用它从指定语言的资源中获取正确的字符串。因此,我有一种服务方法,如:

public string GetTranslatedString(CultureInfo c)
在客户机上,我这样调用此方法:

ServiceReference.GetTranslatedString(CultureInfo.CurrentUICulture);
我也试过:

ServiceReference.GetTranslatedString((CultureInfo)CultureInfo.CurrentUICulture.Clone());
但它会产生错误的结果!传递区域性信息对象时,它就像描述服务所在PC的区域性,而不是客户端所在PC的区域性一样。因此,如果客户机具有“nl”区域性,服务器仍然会获得“en”区域性!为什么?我知道如何通过将LCID传递给服务而不是对象来解决这个问题,但我真的想知道为什么所描述的方法不起作用。

试试这个(4点有趣):


您是否使用了调试器来确保您正在传递您认为从客户端传递的内容?我也不确定CultureInfo是如何解析成WSDL的。也许这有什么问题?一般来说,请尝试通过连线传递可互操作的内容。您还可以提供客户端创建CultureInfo对象的代码吗?@Talvalin CultureInfo.CurrentUICulture是一个静态属性。我不知道它是如何初始化的。@TerryDonaghe请阅读我对jrb答案的评论。我不知道它为什么有效,但它有效!谁能解释一下原因吗?顺便说一句,传递CultureInfo.CurrentUICulture.Name和CultureInfo.CurrentUICulture.LCID而不首先将它们分配给某种变量(如本答案所示)也不起作用,并产生不正确的结果,如我的问题所示!对我来说,这只在web.config中设置
时起作用!
CultureInfo ci = CultureInfo.CurrentUICulture;
string text = ServiceReference.GetTranslatedString(ci);