2012-05-24 16 views
10

Windows 2008 sunucusunda çalışıyorum. Bir wcf servisi çağıran bir Web servisim var. WCF servisi içinde, 20/08/2010 tarihini yayınlamayı deniyor, çünkü bu, ABD biçiminde değil Austrlaian olduğunu düşünüyor.WCF'de Kültür değiştirilemiyor

Şimdiye kadar var: Kontrol panelinde

  • Ben ayrıca IIS7 içinde İngilizce (Austrlian)
  • yerel sistemi kurdunuz İdari sekmesinin altında formatında
  • altında İngilizce Avustralyalı bölgeyi değiştirmek Varsayılan web sitesi seviyesi .Net globalization altında Kültür ve UI kültürünü değiştirdim.
  • Ayrıca Web hizmetine yaptık ve ben eklemiş

WCF Düğümler Web servisine takip ederek bu nihayet kültür değişti

<globalization requestEncoding="utf-8" 
       responseEncoding="utf-8" 
       culture="en-AU" 
       uiCulture="en-AU" /> 

WCF web.config dosyasını apps Web hizmetinde ancak WCF servisi ABD kültürü olarak kalır.

Başka ne deneyebileceğimi söyleyen var mı?

+0

yayını düzenleyebilir çünkü yapamam ve web.config excer'ını biçimlendiriyorum ctrl + K ile. –

cevap

2

Sorun, uygulama havuzunda kullanılan bir kullanıcı için ayarlanan kültürde sorun var. Uygulama havuzları ApplicationPoolIdentity

  • bölgesel Set (maalesef ben ApplicationPoolIdentity için bölgesel ayarların nasıl tespit etmedi) NetworkService olarak değiştirin kullanıyorsa

    1. :

      Bu sorunu çözmek için aşağıdaki yolunu buldu Geçerli kullanıcı üzerinde ihtiyaç duyduğunuz ayarları (en-AU) ve daha sonra here açıklandığı gibi sistem hesapları için kopyalayın.
  • +0

    Bu yaklaşımı, doğru kültüre sahip olacak yeni bir uygulama havuzu kimliği oluşturmak için 2. adımda kullanabilirsiniz. Ayarları kopyalarken, yeni hesaplara uygula onay kutusunu seçin, yeniden başlatın ve yeni bir uygulama havuzu oluşturun. – nuander

    6

    ASPNET uyumluluğunu set yoksa WCF sizin küreselleşme yapılandırmasını göz ardı eder:

    <system.serviceModel>  
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 
    ... 
    

    o modunu kullanmak için servis sınıfı nitelik AspNetCompatibilityRequirements İzin ayarlı olmalı veya Gerekli:

    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
    public class ServiceClass 
    { 
    ... 
    } 
    

    Bu, Kültür ve CultureUI'yi yapılandırma dosyasından uygulamak isterseniz işe yarayabilir. Veya Kültürü, dinamik olarak değişmeyeceğinden eminseniz, WCF hizmet kodunuzda Kültür'ü zorlamaya çalışabilirsiniz. Örneğin, hizmet sınıfı kurucunuzda. Bunun en iyi uygulama olmadığını unutmayın, belki de bir Context başlatıcısı kullanmalısınız, ancak bu oldukça basittir.

    public ServiceClass() 
    { 
        ... 
        System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-AU"); 
        System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-AU"); 
    } 
    

    diğer bilgiler:

    setting-cultureinfo-on-wcf-service-calls

    using-call-context-initializers-for-culture

    0

    Sen Application_Start dosyada, Global.asax.cs dosyada yapabilirsiniz: (

    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"); 
        } 
    }