servizio WCF ottiene cultura sbagliata
-
25-10-2019 - |
Domanda
Ho un metodo di servizio che accetta oggetto CultureInfo come parametro. Voglio usare per ottenere corrette stringhe risorse dal linguaggio che è stato specificato. Così ho un metodo sul servizio come:
public string GetTranslatedString(CultureInfo c)
E sul client Io chiamo questo metodo come questo:
ServiceReference.GetTranslatedString(CultureInfo.CurrentUICulture);
Ho anche provato:
ServiceReference.GetTranslatedString((CultureInfo)CultureInfo.CurrentUICulture.Clone());
ma produce risultati non corretti! L'oggetto informazioni cultura viene passato come se stesse descrivendo la cultura del PC in cui il servizio è, non è la cultura del PC in cui il cliente è. Quindi, se il cliente ha la cultura "nl", il server ottiene ancora "en" cultura! Perché? Io so come risolvere questo problema altrimenti passando LCID al servizio anziché l'oggetto, ma voglio davvero sapere perché l'approccio descritto non funziona.
Soluzione
Prova questo (solo 4 fun):
CultureInfo ci = CultureInfo.CurrentUICulture;
string text = ServiceReference.GetTranslatedString(ci);