2009-01-06 54 views
7

Tengo un VPS alojado alojado por una empresa de alojamiento del Reino Unido que, por algún motivo, está configurado en la configuración de EE. UU. De hecho, hasta hace poco, las configuraciones regionales eran 'inglés - Estados Unidos'. He corregido la configuración regional, pero mi aplicación sigue funcionando con el formato de fecha incorrecto. Ver:Cambiar la configuración regional predeterminada en IIS 6.0

http://www.albaassoc.com/events/listevents.aspx

Se supone que las fechas predeterminadas para ser la fecha actual a la fecha + 3 meses, pero como se puede ver, el dd y campos MM se intercambian. Nota: el extensor de calendario AJAX se establece manualmente en dd/MM/aaaa, por lo que el calendario pop cree que estamos interesados ​​en junio/julio en lugar de enero.

Sé que hay varias maneras de configurar una página o una aplicación para usar una configuración regional en particular, pero prefiero adoptar un enfoque global.

¿Es posible volver a configurar IIS para que funcione en una configuración regional diferente, o si no, puedo ajustar machine.config para que sea un cambio único?

Tengo un billete abierto con el anfitrión, pero no voy a aguantar la respiración - que no van a querer volver a instalar IIS ...

Gracias de antemano.

Respuesta

6

A través del elemento globalization, puede establecer el cultivo y la uicultura para un sitio (a través de web.config) o la máquina completa (a través de machine.config).

+0

hmmm ... intenté eso. A Intellisense no le gustó el atributo de cultura, y no pareció funcionar de todos modos. Publicaré el código que probé cuando vuelva a mi escritorio. – CJM

+0

Intenté esto colocando un web.config en un sitio web para una aplicación ASP clásica pero no funcionó. Supongo que solo funciona para una aplicación ASP.NET y no para cambiar la configuración regional en el nivel IIS. – GiddyUpHorsey

5

Acabo de recibir un problema similar (Windows Server 2008, IIS 7). Pude arreglarlo editando el archivo de configuración web, pero como tú quería una solución global.

La solución está en el panel de configuración, configuración regional. No sé por usted (cuál es su sistema operativo), pero en WS2008, hay una pestaña administrativa en la configuración regional. Le permite copiar la configuración de su usuario conectado (usted) a las cuentas administrativas (servicios de red en este caso). Reiniciado y lo hice bien.

+0

Cheers Nicolas - Voy a echar un vistazo a eso. – CJM

+0

Tenía razón, Nicolas, en realidad hay una opción en: Panel de control -> Opciones regionales y de idioma -> Avanzado -> verifique 'Aplicar todas las configuraciones a la cuenta de usuario actual y al perfil de usuario predeterminado'. Esto funcionó para mí. Gracias. – lidermin

+0

No funcionó para mí :(El servicio de red y el servicio local todavía estaban configurados en en-US, donde quería cambiarlo a en-NZ. – GiddyUpHorsey

4

El problema suele ser que el usuario que ejecuta IIS o el grupo de aplicaciones al que pertenece su aplicación es una cuenta del sistema que se creó cuando se instaló el servidor. Por lo tanto, heredaron cualquiera que fuera la configuración regional predeterminada en ese momento.

Si no puede solucionarlo en las opciones regionales y de idioma, siempre puede intentar editar en el registro directamente (con la condición habitual de que perder el registro puede ensuciar seriamente Windows). La configuración regional está en HKEY_USERS \ {userid} \ Control Panel \ International: si compara lo que hay para cada usuario con lo que tiene en HKEY_CURRENT_USER \ Control Panel \ International, debería ser bastante obvio qué cambiar. Lo he hecho varias veces en servidores Windows 2000 y funcionó bien.

La otra opción es simplemente crear un nuevo usuario en la máquina con la configuración regional correcta y luego configurar tanto IIS como el grupo de aplicaciones para que se ejecute con esa identidad.

+0

Gracias Robert, Analizaré esto. Su segunda opción parece favorable, mucho menos invasiva. – CJM

+0

Gracias su respuesta resolvió mi problema :) http://stackoverflow.com/questions/1879461/date-format-in-asp-net-versus- in-console-application – ala

+0

@robertc - Saludos, modificar el registro es lo que funcionó para mí. Probé con las otras soluciones proporcionadas en las otras respuestas, pero ninguna de ellas fue efectiva para la clásica aplicación ASP/COM + en la que tengo que trabajar. Usé este [enlace] (http://support.microsoft.com/kb/163846) para determinar los SID para las cuentas del servicio de red y del servicio local. – GiddyUpHorsey

1

Tuve un problema al tener la fecha formateada mm/dd/aaaa cuando quería que fuera dd/mm/aaaa. Estoy usando Windows Server 2003 e IIS 6

La solución fue agregar lo siguiente a cualquier archivo de configuración web, luego reinicie su servidor y debería funcionar bien.

<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-GB" /> 
+1

Código mencionado en esta respuesta no aparece. Utilicé el código de esta respuesta para resolver este problema http://stackoverflow.com/questions/1879461/date-format-in-asp-net-versus-in-console-application/1880178#1880178 – Leah

1

Bit de un viejo hilo, pero todavía se ven después de algunos sitios de legado ASP clásico escrito por la civilización azteca ya desaparecida en la alabanza de sus dioses con plumas.

Un movimiento del servidor impidió que todo el código de fecha funcionara y sacrificar un pollo no fue de ayuda, así que aquí está la solución muy fácil en IIS 7 que no se ha mencionado, posiblemente porque nadie más está sufriendo como yo.

  1. Ir a Administrador de IIS.
  2. Seleccione el nodo del servidor raíz para aplicar a todos los sitios, o seleccione el nodo del sitio con el que tiene problemas si desea dejar el servidor por defecto solo.
  3. En la sección IIS, haga doble clic en el icono ASP.
  4. Establezca ID de configuración regional en la configuración regional deseada (2057 para el Reino Unido).

Esto debería tener efecto inmediatamente.

Alternativamente, podría ir a comprar un DeLorean, retroceder en el tiempo y matar al programador que decidió que FormateDateTime(d, vbLongDate) era la mejor forma de generar una fecha para usar en la base de datos. O persuadir al cliente para que me dé mucho dinero para reemplazar todo. Cualquiera de los dos está bien.

Cuestiones relacionadas