WCF サービスは間違った文化を受け入れています
-
25-10-2019 - |
質問
CultureInfo オブジェクトをパラメーターとして受け入れるサービス メソッドがあります。これを使用して、指定された言語でリソースから正しい文字列を取得したいと考えています。したがって、サービスには次のようなメソッドがあります。
public string GetTranslatedString(CultureInfo c)
そしてクライアントではこのメソッドを次のように呼び出します。
ServiceReference.GetTranslatedString(CultureInfo.CurrentUICulture);
私も試してみました:
ServiceReference.GetTranslatedString((CultureInfo)CultureInfo.CurrentUICulture.Clone());
しかし、間違った結果が生成されます。カルチャ情報オブジェクトは、クライアントが存在する PC のカルチャではなく、サービスが存在する PC のカルチャを記述しているかのように渡されます。したがって、クライアントに「nl」カルチャがある場合でも、サーバーには「en」カルチャが適用されます。なぜ?オブジェクトではなくサービスに LCID を渡すことでこの問題を解決する方法はわかっていますが、説明されているアプローチが機能しない理由を本当に知りたいです。
解決
これを試してみてください (たった 4 つの楽しみ):
CultureInfo ci = CultureInfo.CurrentUICulture;
string text = ServiceReference.GetTranslatedString(ci);
所属していません StackOverflow