我在Windows 2008服务器上运行。我有一个调用wcf服务的Web服务。 在WCF服务中,它会尝试投放20/08/2010的日期,因为它认为它是美国格式而不是澳大利亚语。
到目前为止,我有:
我已将以下内容添加到Web服务和WCF应用程序web.config文件
<globalization requestEncoding="utf-8"
responseEncoding="utf-8"
culture="en-AU"
uiCulture="en-AU" />
这最终改变了Web服务的文化,但WCF服务仍然是美国文化。
有谁能告诉我还能尝试什么?
答案 0 :(得分:7)
如果您未设置aspNet兼容性,WCF将忽略您的全球化配置:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
...
要使用该模式,您的服务类必须将AspNetCompatibilityRequirements属性设置为Allowed或Required:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ServiceClass
{
...
}
如果您想从配置文件中应用Culture和CultureUI,这可能会有效。
或者您可以尝试在WCF服务代码中强制使用Culture,如果您确定它不会动态更改。例如,在您的服务类构造函数中。请注意,这不是最佳实践,也许您应该使用Context初始化程序,但这个很简单。
public ServiceClass()
{
...
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-AU");
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-AU");
}
更多信息:
答案 1 :(得分:2)
问题在于为应用程序池中使用的用户设置的文化。
我找到了以下解决此问题的方法:
答案 2 :(得分:0)
您可以在Global.asax.cs
文件的Application_Start
文件中执行此操作:
using System.Threading;
using System.Globalization;
public class Global : HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("en-AU");
}
}