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

这是更具体和更清洁的这个问题的版本 – 开发和testing环境的不同的DateTimeFormat

在我的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”

问题是 – 什么设置在IIS负责这个,我怎么能覆盖它?

4 Solutions collect form web for “在VS dev服务器和IIS上为ASP.NET MVC应用程序设置文化”

而不是设置线程的文化,你可以像这样在web.config中指定它:

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

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

那么,我实际上没有find什么IIS设置负责,但我已经在Application_PreRequestHandlerExecute()覆盖它,它终于工作:

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

我认为这是一个很好的select,让客户(即用户代理/浏览器)决定他想要的文化。 这可以通过将web.config中的globalization元素的cultureuiCulture属性设置为auto 。 请参阅“版本1”。

你也可以做这样的事情:采取交叉设置,但如果不是possbile使用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中为您的应用程序设置默认文化,您可以在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"); } 
  • 无法打开login请求的数据库“testing”。 login失败。 用户'xyz \ ASPNET'login失败
  • Asp.NET Web API - 405 - 用于访问此页面的HTTP动词不被允许 - 如何设置处理程序映射
  • WCF,无法findServiceHost指令中的服务属性值
  • LESS文件不加载(404)
  • 如何以零停机时间部署ASP.NET应用程序
  • 了解IIS 7日志文件
  • find安装的PHP是线程安全的还是非线程安全的?
  • IISExpress从远程计算机返回503错误
  • 在Windows 10预览版中,无法在Microsoft Edge(Project Spartan)中打开本地主机
  • 如何在IIS中为静态资源的HTTP标头中设置到期date或最大使用期限
  • 如何使用web.config文件强制使用HTTPS