Tengo un problema con un ensamblado C# (.net 2.0 escrito con Visual Studio 2005) que está instalado en un servidor del Reino Unido y debe usar la configuración regional del Reino Unido.Dónde se establece el entorno/entorno del sistema para .Net
Lo que hace mi código es convertir una fecha en el formato dd/MM/aaaa en utc. es decir, aaaa-mm-dd. El problema surgió con fechas como 16/02/2010 donde el componente no pudo convertir la fecha y devolvió el error. Después de la depuración me di cuenta de que, por alguna extraña razón, CultureInfo devuelto por System.CultureInfo es en-US.
puedo programáticamente cambiar estos ajustes usando:
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB", false);
y mi código funciona bien.
Sin embargo, no quiero hacer eso todo el tiempo, ya que mi sistema debería ser el Reino Unido. Nosotros no. Entonces, ¿cómo puedo cambiar la cultura predeterminada para .Net framework de forma predeterminada en-GB en lugar de en-US?
Para información:
- he tratado de actualizar el archivo machine.config y especificar la cultura = es-ES para la sección de la globalización (que se establece en punto muerto), pero no funciona bien [han hecho eso para 1.1 y 2.0] pero es posible que no lo haya cambiado correctamente.
- He verificado la configuración regional de Windows y definitivamente están configurados en el Reino Unido con fechas como dd/MM/aaaa
- Me estoy ejecutando en un servidor virtual y he verificado mi sistema host. También se establece en Reino Unido
Editar:
Un poco de detalles adicionales sobre el contexto. El ensamblado en cuestión se llama a través de la interoperabilidad COM de un componente nativo de C++ de terceros que se ejecuta como una aplicación COM +.
Podría ser interesante ver si el problema proviene del entorno C++/COM o del sistema operativo. ¿Qué sucede si acaba de escribir una aplicación de consola simple con Console.WriteLine (Thread.CurrentThread.CurrentCulture.DisplayName); ¿Qué muestra? – HackerBaloo