设置ASP的区域性.. NET MVC应用在VS dev服务器和IIS上

本文关键字:dev VS 服务器 IIS 应用 ASP 区域性 NET MVC 设置 | 更新日期: 2023-09-27 18:06:54

这是这个问题的更具体和更清晰的版本-开发和测试环境的不同DateTimeFormat

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

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

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

  1. 在VS dev server - "en-GB"
  2. 在IIS中- "en-US"

问题是- IIS中的哪些设置负责此,我如何覆盖它?

设置ASP的区域性.. NET MVC应用在VS dev服务器和IIS上

您可以在web中指定它,而不是设置线程的文化。配置如下:

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

这是在ASP.NET中指定区域性的一种更"适当"的方式。

嗯,我实际上没有发现IIS设置是负责的,但我已经在 application_preequesthandlerexecute ()中覆盖了它,它终于工作了:

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

我认为让客户端(即用户代理/浏览器)决定他想要的文化是一个很好的选择。这可以通过设置web中globalization元素的cultureuiCulture属性来实现。配置为auto。见"版本1"

您也可以这样做:采用浏览器设置,但如果不可能使用en-US作为回退值。见"版本2"

版本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>


请参阅本文以获取更多信息:自动检测和设置ASP。基于浏览器区域设置的。NET区域设置

要在MVC中为你的应用设置默认文化,你可以很容易地在你的 routecconfig 类中添加路由:

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