Configuración de la cultura para la aplicación ASP.NET MVC en el servidor de desarrollo VS e IIS

Esta es una versión más específica y limpia de esta pregunta: Diferente DateTimeFormat para entorno de desarrollo y prueba

En los Application_BeginRequest () método de global.asax.cs en mi proyecto ASP.NET MVC hay código:

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");

Cuando establezco un punto de interrupción en la acción del controlador, veo el siguiente valor de Thread.CurrentThread.CurrentCulture:

  1. En el servidor de desarrollo VS - "en-GB"
  2. En IIS: "en-US"

La pregunta es: ¿qué configuraciones en IIS son responsables de esto y cómo puedo anularlo?

preguntado el 27 de agosto de 11 a las 17:08

No puedo ver inmediatamente una diferencia con su pregunta anterior. Si lo hay, debería haberlo vinculado y haber explicado la diferencia. -

Soy nuevo en StackOverflow, así que avísenme la forma adecuada de hacerlo. He creado esta pregunta porque es más específica y más limpia que la anterior. Establecí una actualización de la pregunta anterior con un enlace a la pregunta actual. -

4 Respuestas

En lugar de establecer la cultura del hilo, puede especificarlo en web.config así:

<configuration>
    <system.web>
        <globalization uiCulture="en-GB" culture="en-GB" />
    </system.web>
</configuration>

Esa es una forma más "adecuada" de especificar la cultura en ASP.NET.

Respondido 30 Oct 13, 17:10

@Traumer: en una pregunta "nueva y mejorada" debería haber mencionado eso. También una lista completa de la configuración de idioma del sistema y del navegador para todos los clientes y servidores habría estado bien. - Henk Holterman

Gracias por el consejo. Lo usaré en el futuro. Pero para esta pregunta ya encontré una solución. - dygo

hola, gracias, agregar web.config hizo funcionar mi formato de fecha, pero ¿es posible agregar la globalización directamente en una vista particular en mvc de esta manera? @using System.Web.WebPages uiCulture="en-GB" culture="en-GB", pero el formato de fecha no funcionó, solo se muestra como texto a la vista, encontré esta idea aquí - Shaiju T

Bueno, en realidad no encontré cuál es la configuración de IIS responsable, pero la anulé en Application_PreRequestHandlerExecute () y finalmente funcionó:

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");

Respondido 29 ago 11, 01:08

Creo que es una buena opción dejar que el cliente (es decir, el agente de usuario / navegador) decida qué cultura quiere. Esto se puede hacer configurando el culture y uiCulture atributo de la globalization elemento en web.config para auto. Ver "Versión 1".

También puede hacer algo como: Tomar la configuración de broswers, pero si no es posible, use en-US como valor de reserva. Ver "Versión 2".

Versión 1:

<configuration>
   <system.web>    
      <globalization culture="auto" uiCulture="auto"/>
   </system.web>
</configuration>

Versión 2:

<configuration>
   <system.web>    
       <globalization culture="auto:en-US" uiCulture="auto:en-US" />
   </system.web>
</configuration>


Consulte también este artículo para obtener más información: Detección automática y configuración de la configuración regional de ASP.NET según la configuración regional del navegador

Respondido 02 Abr '16, 19:04

Para establecer una Cultura predeterminada para su aplicación en MVC, puede agregar fácilmente esto ruta en tu RouteConfig clase:

 foreach (var route in routes.Cast<Route>().Where(route =>
 route.GetType() == typeof(MultiLingualRoute)))
             {
                 route.Url = "{language}/" + route.Url;
                 route.Defaults.Add("language", "YOUR-DEFAULT");

             }

Respondido 15 Feb 15, 09:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.