C# WCF服务获得错误的文化
我有一个接受CultureInfo对象作为参数的服务方法。我想使用它从指定语言的资源中获取正确的字符串。因此,我有一种服务方法,如: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
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);