0

私は現在、グローバル化された ASP.NET アプリケーションを開発しています (英語とフランス語で作業する必要があります)。

私の問題は、Windows のフランス文化が変更されたため (数値と通貨の小数点記号がデフォルトの "," ではなく "." に設定されている)、デフォルト値が必要なことです。簡単に言うと、これはdecimal.TryParse()関数を台無しにしており、コードでパッチを当てたくありません (問題はセットアップの問題であるため、コードではなくセットアップを修正する必要があります)。

そこで、Windows コントロール パネルに移動し、カルチャの既定値をリセットし (数値/通貨の小数点記号が "." から "," に戻りました)、変更が Web アプリケーションで有効になることを期待しました。いいえ、うまくいきませんでした。

まあ、有効にするには古き良きものが必要かもしれませんiisreset。やった、もう一度テスト... いいえ、同じエラーです。

わかりました。かなり深いかもしれません。では、マシンを再起動してみませんか。再起動、再テスト、そして... いいえ、... 小数点記号はまだ "." です。

それはイライラします...単純なコンソールアプリケーションが何をするか見てみましょう。コンソールでは、それは魅力のように機能します。Windows の設定と常に同じです。

ASP.NET のカルチャ定義はインストール時に定義され、後で変更できないのでしょうか? aspnet-regiis -i念のため、何を推測しようとしましたか?うまくいきませんでした!

では、ASP.NET がそのカルチャ定義を管理する方法と、それらを更新する方法を教えてもらえますか?

前もって感謝します!

更新 (デバッグ情報):

私のコンピューターでこの構成から始めます(小数点記号を表示するだけですが、小数点記号と通貨記号の両方を変更しています):

以前の Windows 構成

ASP.NET アプリケーションのデバッグでこれを取得します。

ASP.NET デバッグ前

そして、これはプレーンなコンソール アプリケーションでは次のようになります。

コンソール デバッグ前

そして、Windows の設定を次のように変更します。

以前の Windows 構成

ASP.NETデバッグでこれを取得します(iisreset再起動後など):

ASP.NET デバッグ後

コンソール アプリケーションでの正しい設定:

コンソール デバッグ後

更新 2 (レジストリ情報):

私の同僚は、ローカリゼーション情報がいくつかのレジストリ キーの下に保持されていることを指摘しました。

HKEY_USERS\.DEFAULT\Control Panel\International

HKEY_USERS\S-1-5-20\Control Panel\International

そのため、ローカリゼーションがユーザー定義であり、IIS が DefaultAppPool ユーザーで実行されている場合、ユーザーのローカリゼーション設定を変更しても何の効果もないと考えるようになりました。

Windows では、システム アカウントと新しいユーザーのローカリゼーション設定を更新する可能性があります。

Windows の地域設定ウィンドウ Windows コピー設定ウィンドウ

2 つのチェックボックスをオンにすると、すべてがリセットされるようですが、DefaultAppPool 設定がリセットされます。

4

1 に答える 1

0

レジストリ情報の2回目の更新に基づいて、簡単な方法を採用しました。デフォルトのローカリゼーション設定をデフォルトからDefaultAppPoolユーザーが使用する設定にコピーします。

それで:

  1. 書き出す

    HKEY_USERS\.DEFAULT\Control Panel\International

  2. エクスポート(バックアップ用->重要!!、問題が発生した場合は必要になります)

    HKEY_USERS\S-1-5-82-3006700770-424185619-1745488364-794895919-4004696415\Control Panel\International

    S-1-5-82-3006700770-424185619-1745488364-794895919-4004696415DefaultAppPoolユーザーが使用するキーはどこにありますか

  3. 最初にエクスポートされたキーパスを2番目と同じになるように変更します

  4. 変更されたレジストリキーをインポートします

これで問題が確実に解決したとしても、もっと良い解決策があるかもしれません。それでも私はそれを聞きたいと思っています。

于 2012-11-20T22:07:15.023 に答える