web-dev-qa-db-ja.com

IISがASP.NETで設定されたカルチャを上書きしないようにするにはどうすればよいですか?

私は米国にクライアントがいて、すべての時間を軍用時間として表示したいと思っていますが、それ以外はすべて米国文化であると想定されています。

私のglobal.asaxでは、米国文化のコピーを作成し、GB時間表示を適用して、軍用時間のある米国文化を作成しています。

私がこれをしている理由は、それが可能な文化を見つけることができなかったからです。しかし、誰かが知っていれば、それは素晴らしいことです。

私が直面している問題は、WebサイトをIIS(バージョン6)に展開すると、すべてが米国の文化に戻っているように見えることです。

カルチャを変更する方法を調べたところ、[ASP.NET]タブ-> [構成の編集]-> [アプリケーション]タブで設定を見つけました。

デフォルト値はaf-ZAです。

この文化のオーバーライドを無効にするオプションはないようです。とにかくaf-ZAが正しいとは思いませんか?

IISがASP.NETでプログラムで設定されたカルチャを上書きしないようにする方法はありますか?

注:プログラミングではなくサーバー側のソリューションを探しているので、ここで質問します。ありがとう!

3
Brett Allen

これは少なくとも部分的にコーディングの質問です。基本的に、System.GlobalizationのCultureAndRegionInfoBuilderクラスを使用して、新しいカルチャを作成および登録する必要があります。

登録が完了すると、ASP.Netアプリケーション設定内で新しいカルチャを選択できます。 (またはアプリケーションのweb.configファイル内。)

ここにあなたが始めるべきいくつかの参考文献があります:
http://msdn.Microsoft.com/en-us/library/ms172469.aspx
http://msdn.Microsoft.com/en-us/library/system.globalization.cultureandregioninfobuilder.aspx

3
MattB

サーバーとasp.netに精通している誰かと話した後、私の質問に対する答えを見つけました

どうやら、Web.configでアプリケーション全体のカルチャを設定することしかできません

ページリクエストを処理する子スレッドに引き継がれないglobal.asaxのアプリケーションのメインスレッドに設定していました。

興味深いことに、Visual Studioのホスティングプロセスを介してローカルマシンで実行する場合、すべての要求は同じスレッドを介して実行する必要があります。

これが、IISの問題であると私が信じた理由です。なぜなら、それをIISに置くまで、問題は発生しなかったからです。

私の解決策:(より適切な解決策を受け入れました)

各ページリクエストスレッドにカスタムカルチャを設定する必要があります。私の解決策は、それをマスターページのロードに入れることでした。 IISは設定を上書きしません。

0
Brett Allen