我在美国有一个客户希望所有时间都显示为军事时间,但其他一切都应该是美国文化。
在我的 global.asax 中,我正在创建美国文化的副本,并应用 GB 时间显示来创建具有军事时间的美国文化。
我这样做的原因是我找不到能够做到这一点的文化,但是如果有人知道,那就太好了。
我遇到的问题是,当我们将网站部署到 IIS(版本 6)时,这一切似乎都恢复到了美国文化。
查找如何更改文化,我在 ASP.NET 选项卡 -> 编辑配置 -> 应用程序选项卡中找到了设置
默认值为 af-ZA。
似乎没有选项可以禁用这种压倒一切的文化,而且我不相信 af-ZA 是正确的吗?
有没有办法防止 IIS 覆盖在 ASP.NET 中以编程方式设置的区域性?
注意:在这里询问,因为我正在寻找服务器端解决方案,而不是编程解决方案。谢谢!
这至少部分是一个编码问题。基本上,您需要使用 System.Globalization 中的 CultureAndRegionInfoBuilder 类来创建和注册您的新文化。
注册后,您可以在 ASP.Net 应用程序设置中选择您的新文化。(或在您的应用程序的 web.config 文件中。)
以下是一些可以帮助您入门的参考资料:http:
//msdn.microsoft.com/en-us/library/ms172469.aspx
http://msdn.microsoft.com/en-us/library/system.globalization.cultureandregioninfobuilder .aspx
在与更精通服务器和 asp.net 的人交谈后找到了我的问题的答案
显然,您只能在 Web.config 中设置应用程序范围的文化
我将它设置在 global.asax 的应用程序主线程中,它没有传递到处理页面请求的子线程。
有趣的是,当通过 Visual Studio 的宿主进程在本地机器上运行时,所有请求都必须通过同一个线程完成。
这就是让我相信这是 IIS 的问题,因为直到我们将它放在 IIS 上才出现问题。
我的解决方案:(接受了更合适的解决方案)
必须在每个页面请求线程上设置自定义文化。我的解决方案是将其放入母版页加载中。IIS 不会覆盖您的设置。