2016-09-06 11 views
0

今日は私の仕事で奇妙な問題がありました。私は7時間を解決に費やしましたが、私は一人で成功しませんでした。私は4台のプロダクションマシンを持っています。私の開発マシンではエラーは発生しません。以下のコードでは、。Convert.ToDecimalとcultureを使用したネットの奇妙な動作

//value = "120,01" 
object objectValue = value;     

objectValue = Convert.ToDecimal(value, new System.Globalization.CultureInfo("pt-BR")); 

string description = string.Format("d {0} - N {1}:", value, (Convert.ToDecimal(objectValue , new System.Globalization.CultureInfo("pt-BR")).ToString(new System.Globalization.CultureInfo("pt-BR")))); 

//Production two results: 

//Machine 01: d 120,01 - N 120,01: 
//Machine 02: d 120,01 - N 12001: 

でも、問題が発生します。 4台のマシンでIISプロセスをシャットダウンした後は、正常に動作します。

何が起こったのですか?

+0

マシンのデフォルトカルチャ設定は、プログラムの開始時にキャッシュされます。それをリセットするにはCultureInfo.ClearCachedData()を呼び出さなければなりません。実用的ではありませんが、アプリケーションプールをリサイクルするだけです。あなたのコード変更が何の効果もなかったのは、推測するのがなぜ難しいのでしょうか。アプリケーションプールのリサイクルを実践してください。 [asp.net] –

+0

でasp.netアプリケーションに関する質問にタグを付けるのがベストです。アプリケーション全体のカルチャを設定するには、スレッドで設定できます。 CultureInfo( "pt-BR"); – Greg

答えて

0

小数点記号が.になったようです。

使用するCultureInfoのコンストラクタはthis oneになり、useUserOverrideパラメータはtrueになります。このパラメータが備考でどのように使用されているかを参照してください。

アプリケーションプールを実行しているユーザーの言語設定が変更されている可能性はありますか?

関連する問題