在VS dev服务器和IIS上设置ASP.NET MVC应用程序的文化

时间:2011-08-27 17:10:08

标签: c# asp.net-mvc iis

这是此问题的更具体,更清晰的版本 - Different DateTimeFormat for dev and test environment

在我的ASP.NET MVC项目中global.asax.cs的 Application_BeginRequest()方法中有代码:

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

当我在Controller Action上设置断点时,我看到Thread.CurrentThread.CurrentCulture的以下值:

  1. 在VS dev服务器中 - “en-GB”
  2. 在IIS中 - “en-US”
  3. 问题是 - IIS中的哪些设置对此负责以及如何覆盖它?

4 个答案:

答案 0 :(得分:124)

您可以在web.config中指定它,而不是设置Thread的文化:

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

这是在ASP.NET中指定文化的更“恰当”的方式。

答案 1 :(得分:18)

好吧,我实际上并没有找到IIS设置的责任,但是我已经在 Application_PreRequestHandlerExecute()中覆盖了它,它最终起作用了:

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

答案 2 :(得分:6)

我认为让客户(即用户代理/浏览器)决定他想要的文化是一个不错的选择。 这可以通过将web.config中culture元素的uiCultureglobalization属性设置为auto来完成。参见&#34;版本1&#34;。

您还可以执行以下操作:执行broswers设置,但如果不可能则使用en-US作为后备值。请参阅&#34;版本2&#34;。

版本1:

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

版本2:

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


有关详细信息,请参阅此文章:Auto Detecting and Setting ASP.NET Locale based on Browser Locale

答案 3 :(得分:0)

要在MVC中为您的应用设置默认的Culture,您可以在 RouteConfig 类中轻松添加此路径

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

             }
相关问题