私は現在、グローバル化された ASP.NET アプリケーションを開発しています (英語とフランス語で作業する必要があります)。
私の問題は、Windows のフランス文化が変更されたため (数値と通貨の小数点記号がデフォルトの "," ではなく "." に設定されている)、デフォルト値が必要なことです。簡単に言うと、これはdecimal.TryParse()
関数を台無しにしており、コードでパッチを当てたくありません (問題はセットアップの問題であるため、コードではなくセットアップを修正する必要があります)。
そこで、Windows コントロール パネルに移動し、カルチャの既定値をリセットし (数値/通貨の小数点記号が "." から "," に戻りました)、変更が Web アプリケーションで有効になることを期待しました。いいえ、うまくいきませんでした。
まあ、有効にするには古き良きものが必要かもしれませんiisreset
。やった、もう一度テスト... いいえ、同じエラーです。
わかりました。かなり深いかもしれません。では、マシンを再起動してみませんか。再起動、再テスト、そして... いいえ、... 小数点記号はまだ "." です。
それはイライラします...単純なコンソールアプリケーションが何をするか見てみましょう。コンソールでは、それは魅力のように機能します。Windows の設定と常に同じです。
ASP.NET のカルチャ定義はインストール時に定義され、後で変更できないのでしょうか? aspnet-regiis -i
念のため、何を推測しようとしましたか?うまくいきませんでした!
では、ASP.NET がそのカルチャ定義を管理する方法と、それらを更新する方法を教えてもらえますか?
前もって感謝します!
更新 (デバッグ情報):
私のコンピューターでこの構成から始めます(小数点記号を表示するだけですが、小数点記号と通貨記号の両方を変更しています):
ASP.NET アプリケーションのデバッグでこれを取得します。
そして、これはプレーンなコンソール アプリケーションでは次のようになります。
そして、Windows の設定を次のように変更します。
ASP.NETデバッグでこれを取得します(iisreset
再起動後など):
コンソール アプリケーションでの正しい設定:
更新 2 (レジストリ情報):
私の同僚は、ローカリゼーション情報がいくつかのレジストリ キーの下に保持されていることを指摘しました。
HKEY_USERS\.DEFAULT\Control Panel\International
HKEY_USERS\S-1-5-20\Control Panel\International
そのため、ローカリゼーションがユーザー定義であり、IIS が DefaultAppPool ユーザーで実行されている場合、ユーザーのローカリゼーション設定を変更しても何の効果もないと考えるようになりました。
Windows では、システム アカウントと新しいユーザーのローカリゼーション設定を更新する可能性があります。
2 つのチェックボックスをオンにすると、すべてがリセットされるようですが、DefaultAppPool 設定がリセットされます。