これは、この質問のより具体的でクリーンなバージョンです- 開発環境とテスト環境の異なるDateTimeFormat
ASP.NET MVCプロジェクトのglobal.asax.csのApplication_BeginRequest()メソッドには次のコードがあります。
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
Controller Actionにブレークポイントを設定すると、Thread.CurrentThread.CurrentCultureの次の値が表示されます。
質問です-IISのどの設定がこれに責任があり、どのようにオーバーライドできますか?
まあ、実際にIIS設定が責任を負うものを見つけられませんでしたが、Application_PreRequestHandlerExecute()でオーバーライドし、最終的に機能しました:
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
スレッドのカルチャを設定するのではなく、次のようにweb.configで指定できます。
<configuration>
<system.web>
<globalization uiCulture="en-GB" culture="en-GB" />
</system.web>
</configuration>
これは、ASP.NETでカルチャを指定するより適切な方法です。
クライアント(つまり、ユーザーエージェント/ブラウザー)に自分が望む文化を決定させるのは良い選択肢だと思います。これを行うには、web.configのculture
要素のuiCulture
およびglobalization
属性をauto
に設定します。 「バージョン1」を参照してください。
次のようなこともできます:broswers設定を取得しますが、可能でなければフォールバック値としてen-US
を使用します。 「バージョン2」を参照してください。
バージョン1:
<configuration>
<system.web>
<globalization culture="auto" uiCulture="auto"/>
</system.web>
</configuration>
バージョン2:
<configuration>
<system.web>
<globalization culture="auto:en-US" uiCulture="auto:en-US" />
</system.web>
</configuration>
詳細については、この記事も参照してください。 ブラウザロケールに基づいたASP.NETロケールの自動検出および設定
MVCでアプリのデフォルトのカルチャを設定するには、このrouteをRouteConfigクラスに簡単に追加できます。
foreach (var route in routes.Cast<Route>().Where(route =>
route.GetType() == typeof(MultiLingualRoute)))
{
route.Url = "{language}/" + route.Url;
route.Defaults.Add("language", "YOUR-DEFAULT");
}