7

組み込みのグローバリゼーション機能を使用する ASP.NET アプリケーションがクラッシュするケースが発生しています。

Culture="auto" ディレクティブを含む ASP.NET ページで、ニュートラル カルチャをブラウザー言語として使用するユーザー ("zh-Hans" など) は、次の例外を生成します。

文化「zh-Hans」は中立的な文化です。書式設定や解析には使用できないため、スレッドの現在のカルチャとして設定することはできません。

System.Globalization.CultureInfo.CheckNeutral (CultureInfo カルチャ) で System.Threading.Thread.set_CurrentCulture (CultureInfo 値) で System.Web.UI.Page.set_Culture (文字列値) で ASP.somePage_aspx.__BuildControlTree (somePage_aspx __ctrl) で ASP で.somePage_aspx.FrameworkInitialize()

何か案は?Culture/UICulture パラメーターに渡されたガベージは通常無視されるように見えますが、このケースでは未処理の例外が発生しています。

4

3 に答える 3

6

私は同じ問題を抱えていて、しばらく壁に頭をぶつけた後、私の鼻の下に答えが見つかりました.

私が抱えていた問題は、 CurrentCultureCurrentUICultureの違いを理解していないことでした。違いは、CurrentCultureは日付、数値をフォーマットし、並べ替えを実行するために使用され、CurrentUICultureはリソースからカルチャ固有の文字列を検索するために使用されます。

次のようなコードがいくつかありました

return input.ToString("C", System.Globalization.CultureInfo.CurrentUICulture);

あるべきとき

return input.ToString("C", System.Globalization.CultureInfo.CurrentCulture);

カルチャ固有のアイテムを非特定のカルチャでフォーマットしようとすると、System.NotSupportedException が発生します。

于 2009-11-03T03:46:00.370 に答える
3

まず、 <%@ Page %> 宣言で UICulture="auto" と Culture="auto" を設定することを検討してください。

現在、.NET 4.0 (ベータ版) のインストールではこの再現が見られないため、これは .NET 3.5 の製品バグである可能性があります。

ニュートラル カルチャと UICulture と Culture の違いについて学習するための優れたリソースは次のとおりです。 .aspx

お役に立てば幸いです。

于 2009-08-31T20:58:00.983 に答える
2

開始リクエストでカルチャを設定できませんか?(注:asp.net要求はスレッド間をジャンプする可能性があるため、移動するスレッドにもフックする必要があります。)

于 2009-08-26T18:49:46.827 に答える