ASP.NET globalización: Culture = directiva de página “auto” con choque cultural neutra?
-
19-09-2019 - |
Pregunta
Estoy corriendo en un caso en el que una aplicación ASP.NET utilizando el incorporado en las instalaciones de la globalización está fallando.
En una página ASP.NET con la cultura directiva = "auto", un usuario con una cultura neutra como su idioma del navegador (por ejemplo "zh-Hans") producirá la siguiente excepción:
Cultura 'zh-Hans' es una referencia cultural neutra. No se puede utilizar en formateo y análisis y por lo tanto No se puede establecer como actual del hilo cultura.
a System.Globalization.CultureInfo.CheckNeutral (CultureInfo cultura) en System.Threading.Thread.set_CurrentCulture (CultureInfo valor) en System.Web.UI.Page.set_Culture (String valor) en ASP.somePage_aspx .__ BuildControlTree (somePage_aspx __ctrl) en ASP.somePage_aspx.FrameworkInitialize ()
¿Alguna idea? Garbage alimentado en los parámetros de cultivo / UICulture generalmente parecen ser ignorada, pero este caso está causando una excepción no controlada.
Solución
En primer lugar, es posible considerar el establecimiento de UICulture = "auto", así como Cultura = "auto" en su <% @% de página> declaración.
Ahora, no estoy viendo esta repro en mi .NET 4.0 (beta) instalar, por lo que este podría ser un error de producto en .NET 3.5.
Aquí hay un gran recurso para aprender sobre las culturas neutrales y la diferencia entre UICulture y Cultura: http://blogs.msdn.com/ddietric/archive/2008/02/05/yacvcp-yet-another-currentculture-vs-currentuiculture- post.aspx
Espero que sea útil.
Otros consejos
Yo estaba teniendo el mismo problema y después de bonking la cabeza contra una pared durante un tiempo encontré la respuesta delante de mis narices.
El problema que tuve fue en no entender la diferencia entre CurrentCulture y CurrentUICulture . La diferencia es CurrentCulture se utiliza para formatear fechas, números y realizar la clasificación, CurrentUICulture se utiliza para buscar cadenas específicas de la cultura de un recurso.
Yo tenía algo de código que se parecía a
return input.ToString("C", System.Globalization.CultureInfo.CurrentUICulture);
cuando debería ser sido
return input.ToString("C", System.Globalization.CultureInfo.CurrentCulture);
Cuando empezar a tratar de temas específicos de cultivo formato con una cultura no específica obtendrá el System.NotSupportedException.
No se puede establecer que la cultura de iniciar la solicitud? (Nota:. Solicitudes ASP.NET puede saltar entre las discusiones por lo que necesita para enganchar en la rosca se mueve también)