spanish net configuracion change asp asp.net globalization culture uiculture

asp.net - net - ui culture



CurrentCulture no se configura correctamente de forma predeterminada en-US en ASP.net (7)

Acabo de migrar alrededor de 100 sitios ASP.net de IIS 6 en Windows Sever 2003 a IIS 7 en Windows 2008. Acabo de notar que varias piezas de código que usan cosas como DateTime.Parse han comenzado a eliminar errores "String no fue reconocido como un DateTime válido ". He rastreado esto hasta el hecho de que la CurrentCulture de los sitios está en forma predeterminada en "en-US", por lo que mis usuarios del Reino Unido están ingresando las fechas en un formato inesperado.

La pregunta es, ¿de dónde sacan en-US? A partir de la parte superior, si veo en ''Panel de control> Región e idioma'' todo está configurado en inglés (Reino Unido). Los web.configs de los sitios no tienen una sección <globalization> o tienen como <globalization culture = "auto" uiCulture = "auto" />. En ''IIS7 - .Net Globalization'' todos los sitios tienen su cultura configurada como ''Idioma invariante (país invariante)''.

No puedo encontrar en ningún lugar la configuración de la cultura "en-US" ... pero algo es.

Thread.CurrentThread.CurrentCulture.Name is outputting ''en-US'' Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol is outputting ''$''

Puedo solucionar el problema agregando <globalization culture = "en-GB" uiCulture = "en-GB" /> a cada web.config PERO ¡Realmente no quiero tener que editar manualmente alrededor de 100 web.configs! No sería para heredar la cultura de la configuración del sistema operativo del servidor, que está configurada en GB.

¿Me estoy perdiendo de algo?


En mi caso, mi grupo de aplicaciones se estaba ejecutando como mi usuario de dominio, que tenía la cultura actual establecida en en-GB, y la aplicación funcionaba bien con el formato de fecha en-GB.

Cambié el grupo de aplicaciones para que se ejecutara bajo el Servicio de red y, de repente, las llamadas DateTime.Parse se rompieron porque la aplicación ahora estaba usando la cultura en-EE. UU. Vi algunas publicaciones de SO ( e.g ) sobre cómo las culturas de IIS son específicas del usuario, lo cual explica eso.

La apertura de .NET Globalization del elemento raíz en el Administrador de IIS y la configuración de Cultura y UI en English UK (en-GB) lo solucionó para mí.


Estos son lugares alternativos donde puedes buscar:

No puedo encontrar en ningún lugar la configuración de la cultura "en-US" ... pero algo es.

Thread.CurrentThread.CurrentCulture.Name está emitiendo ''en-US'' Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol está emitiendo ''$''

Intente buscar el método InitializeCulture , este método se reemplaza en las páginas ASP.Net para establecer la Cultura como:

protected override void InitializeCulture() { var hidden = this.Request.Form["hidden"]; var culture = this.Request.Form[hidden]; if (!string.IsNullOrWhiteSpace(culture)) { this.Culture = culture; this.UICulture = culture; } base.InitializeCulture(); }

Trate de buscar los siguientes atributos de montaje:

[assembly: AssemblyCulture("en-US")] [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.MainAssembly)]

Intenta buscar los siguientes atributos de directiva de página:

<%@ Page Culture="en-US" UICulture="en-US" Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

Intenta buscar en web.configs:

<globalization uiCulture="en-US" culture="en-US" enableClientBasedCulture="false" />

Editar 1

Intente buscar HttpHandlers o HttpModules que intentan establecer el idioma

Intente buscar en la jerarquía web.config (en el servidor, <wwwroot> significa la carpeta raíz de su sitio web de IIS)

  1. Máquina global. <windir>/Microsoft.NET/Framework/<ver>/Config/Machine.config
  2. Configuración web raíz. <windir>/Microsoft.NET/Framework/<ver>/Config/Web.config
  3. Sitio web. <wwwroot>/Web.config
  4. Aplicación web. <wwwroot>/<webapp>/Web.config
  5. Carpeta. <wwwroot>/<webapp>/<dir>/Web.config

Si tiene varios servidores (granja de servidores web), verifique que está siendo redirigido al servidor correcto (el que está verificando la configuración), para hacerlo, puede usar la ip del servidor deseado o configurar sus archivos de host en su computadora cliente


La aplicación web .Net está recogiendo la cultura por defecto de su navegador. Por ejemplo, en FF, el idioma predeterminado se establece como se muestra en la imagen de abajo.

Por lo tanto, si desea una cultura de su sitio que no sea la del navegador, en el método InitializeCulture de la página (Cree una BasePage y mantenga el código debajo de aquí y herede las páginas existentes de esta BasePage).

protected override void InitializeCulture() { System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo("en-GB"); System.Threading.Thread.CurrentThread.CurrentCulture = System.Threading.Thread.CurrentThread.CurrentUICulture; base.InitializeCulture(); } }



Si agrego una sección de globalización en la raíz web.config (windir / Microsoft.NET / Framework / ver / Config / Web.config), configurada en en-GB, soluciona mi problema y se propaga a otros sitios. Que un poco resuelve mi problema. Sin embargo, todavía no explica de dónde se está poniendo en Estados Unidos por defecto, pero debería hacer el truco. Gracias.


Solo para ayudar a alguien tiene el mismo problema ....

Después de intentar cambiar la cultura de IIS, establecer la globalización y hasta ahora sin necesidad, lo hice en Global.asax:

void Application_BeginRequest(Object sender, EventArgs e) { System.Globalization.CultureInfo newCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone(); newCulture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy"; newCulture.DateTimeFormat.DateSeparator = "/"; System.Threading.Thread.CurrentThread.CurrentCulture = newCulture; }


Tuve el mismo problema y después de muchas horas descubrí que aunque las configuraciones regionales eran correctas, también necesitaba cambiar la cultura original para todas las cuentas reservadas (por ejemplo, ASP.NET).

Esto se hace a través del botón " Copiar configuración ... " en la pestaña Administrativo en Configuración regional . La configuración se copia si habilita la casilla de verificación " Pantalla de bienvenida y cuentas del sistema ".