2009-04-28 9 views
6

私はいくつかのデータを解析する必要があるWCFサービスを実行しています。異なるCultureInfoでデータ(ポイント、サイズ)が異なって変換され、多くのクラスとメソッドで解析が広がっていることが判明しました。すべての解析がCultureInfoを渡すことなく行われるので、解析の成功はスレッドの文化に依存します。wcfサービスコールでCultureInfoを設定していますか?

CultureInfoのプログラム設定がないため、サービスは現在のcultureinfoを何らかの形でマシンから取り出します。地域と言語のオプションを変更してもwcfサービスのcultureinfoには何の影響も与えないように見えるので、どこから取得するのか分かりません。また、web.configの変更(iisでサービスがホストされている)は機能していないようです。

私は本当に1つだけのオプションを残していますか?プログラムでCultureInfoを設定しますか?私はすべての変換呼び出しを見つけてCultureInfoを渡すことができました。または、Thread.CurrentThread.CurrentCultureで設定することができました。 CultureInfoを一度設定して、すべての公開されたwcfメソッドに影響を与える方法はありませんか?文化を設定するための動作を定義する方法を示し

答えて

5

Web.configでのタグの使用に関する答えは、Asp.net互換モードが有効な場合にのみ機能します。

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 

httpモジュールは使用されず、タグは無視されます。

+0

私はこれを逃した理由を知らない、感謝:) –

3

あなたはこのブログの記事をチェックアウトする必要があります...

http://blogs.msdn.com/drnick/archive/2008/02/26/using-call-context-initializers-for-culture.aspx

...。

ただし、web.configはあなたの友人になるはずです。あなたはここからあなたのサービスが働く "デフォルト"カルチャーを設定することができます。

グローバリゼーションのelemenent ...

http://msdn.microsoft.com/en-us/library/hy4kkhe0.aspx

...あなたが文化とUICultureを設定できるようにする必要があります...

<globalization 
    enableClientBasedCulture="true|false" 
    requestEncoding="any valid encoding string" 
    responseEncoding="any valid encoding string" 
    fileEncoding="any valid encoding string" 

    responseHeaderEncoding = "any valid encoding string" 
    resourceProviderFactoryType = string 
    enableBestFitResponseEncoding = "true|false" 

    culture="any valid culture string" 
    uiCulture="any valid culture string"/> 
+0

ブログの投稿はいいですが、私の場合はグローバル化要素のようにサービスを少し書き直すことを意味します - 私はそれを試しましたが、うまくいかなかった - 私は別の試みをするでしょうup: –

+0

グローバリゼーション要素は、wcfスレッドのカルチャに影響を与えていないようです。 –

+0

文化に影響を与えていることは他にありますか? Web.config shoulldが動作します。 問題のあるコードを表示する可能性はありますか?あなたはあなたが使用している文化を明示していますか?たとえば、String.Formatを呼び出す場合、CultureInfoをとるオーバーロードを使用していますか? –

0

マーティンが述べたようにあなたが設定ファイルを使用することができます良い習慣として、InvariantCultureが必要とする場合はいつでもカルチャ情報を設定して、異なるロケールで送られてくるデータを処理する必要があります。つまり日付、文字列、数字

+0

良い点。実際には、VSTSコード分析を使用するときは、コード分析チェックです。 – BinaryMisfit

+0

えええええええええええええええええええええええええええええええん - あなたがFXCopでコードを実行し、グローバリゼーションルールをチェックするならば、カルチャが定義されるべきすべての場所を指摘するでしょう。 – Madeleine

+0

はい、これは旧式のコードなので、コード解析をセットアップしたり、可能であれば書き直したりはしていません。 –

関連する問題