web-dev-qa-db-fra.com

Configuration de Culture pour l’application ASP.NET MVC sur le serveur de développement VS et IIS

Ceci est une version plus spécifique et plus propre de cette question - DateTimeFormat différent pour les environnements de développement et de test

Dans la méthode Application_BeginRequest () de global.asax.cs dans mon projet ASP.NET MVC, il y a du code:

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

Lorsque je définis un point d'arrêt sur une action du contrôleur, la valeur suivante de Thread.CurrentThread.CurrentCulture s'affiche:

  1. Dans le serveur de développement VS - "en-GB"
  2. Dans IIS - "en-US"

La question est - Quels paramètres dans IIS sont responsables de cela et comment puis-je les remplacer?

45
dygo

Eh bien, je n'ai pas trouvé le paramètre IIS responsable, mais je l'ai remplacé dans Application_PreRequestHandlerExecute () et cela a finalement fonctionné:

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

Plutôt que de définir la culture du Thread, vous pouvez la spécifier dans le fichier web.config comme suit:

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

C’est une façon plus "appropriée" de spécifier la culture dans ASP.NET.

122
vcsjones

Je pense que c’est une bonne option de laisser le client (c’est-à-dire un agent utilisateur/navigateur) décider de la culture qu’il souhaite . Cela peut être fait en définissant les attributs culture et uiCulture de l’élément globalization dans web.config sur auto. Voir "Version 1".

Vous pouvez également faire quelque chose comme: Prenez le paramètre broswers, mais sinon, utilisez en-US comme valeur de repli. Voir "Version 2".

Version 1:

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

Version 2:

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


Voir également cet article pour plus d’informations: Détection automatique et définition du paramètre régional ASP.NET en fonction du paramètre régional du navigateur

6
Martin

Pour définir une culture par défaut pour votre application dans MVC, vous pouvez facilement ajouter ceci route dans votre RouteConfig class:

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

             }
0
A.Dara