设置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的以下值:
- 在VS dev server - "en-GB"
- 在IIS中- "en-US"
问题是- 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
元素的culture
和uiCulture
属性来实现。配置为auto
。见"版本1"
您也可以这样做:采用浏览器设置,但如果不可能使用en-US
作为回退值。见"版本2"
<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");
}