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プロセスをシャットダウンした後は、正常に動作します。
何が起こったのですか?
マシンのデフォルトカルチャ設定は、プログラムの開始時にキャッシュされます。それをリセットするにはCultureInfo.ClearCachedData()を呼び出さなければなりません。実用的ではありませんが、アプリケーションプールをリサイクルするだけです。あなたのコード変更が何の効果もなかったのは、推測するのがなぜ難しいのでしょうか。アプリケーションプールのリサイクルを実践してください。 [asp.net] –
でasp.netアプリケーションに関する質問にタグを付けるのがベストです。アプリケーション全体のカルチャを設定するには、スレッドで設定できます。 CultureInfo( "pt-BR"); – Greg