wake-up-neo.com

Festlegen der Kultur für die ASP.NET MVC-Anwendung auf dem VS dev-Server und IIS

Dies ist eine spezifischere und sauberere Version dieser Frage - Anderes DateTimeFormat für Entwickler- und Testumgebung

In der Application_BeginRequest () - Methode von global.asax.cs in meinem ASP.NET-MVC-Projekt gibt es Code:

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

Wenn ich einen Haltepunkt für die Controller-Aktion setze, sehe ich den folgenden Wert von Thread.CurrentThread.CurrentCulture:

  1. In VS dev Server - "en-GB"
  2. In IIS - "en-US"

Frage ist - Welche Einstellungen in IIS sind dafür verantwortlich und wie kann ich es überschreiben?

45
dygo

Nun, ich habe nicht wirklich herausgefunden, welche IIS -Einstellung dafür verantwortlich ist, aber ich habe es in Application_PreRequestHandlerExecute () überschrieben und es hat endlich funktioniert:

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

Anstatt die Kultur des Threads festzulegen, können Sie sie in der web.config wie folgt angeben:

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

Dies ist eine "richtigere" Art, die Kultur in ASP.NET anzugeben.

122
vcsjones

Ich denke, es ist eine gute Option, den Client (d. H. User Agent/Browser) entscheiden zu lassen, welche Kultur er wünscht ... Dies kann durch Setzen des Attributs culture und uiCulture des Elements globalization in web.config auf auto erfolgen. Siehe "Version 1".

Sie können auch Folgendes tun: Nehmen Sie die Einstellung des Browsers, aber wenn nicht möglich, verwenden Sie en-US als Fallback-Wert. Siehe "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>


Weitere Informationen finden Sie auch in diesem Artikel: Automatische Erkennung und Einstellung des ASP.NET-Gebietsschemas basierend auf dem Browser-Gebietsschema

6
Martin

Um eine Standardkultur für Ihre App in MVC festzulegen, können Sie diese route leicht in Ihre RouteConfig -Klasse einfügen:

 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