CurrentThread.CurrentCulture显示错误信息

时间:2014-01-29 16:13:07

标签: c# asp.net

当我启动我的网站时,我的比利时客户将获得荷兰当前的文化。 使用此代码Thread.CurrentThread.CurrentCulture.ToString()

在我的web.config中,我添加了此规则

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

我正在尝试将国家名称(例如比利时,荷兰,法国......)或文化(例如be-NL,nl-NL,fr-FR)保存到基于数据库的数据库中客户的位置。

问题是有些国家,比如比利时,从未找到过。 我确保知识产权位于我希望通过whatismyipaddress.com进入的国家/地区

2 个答案:

答案 0 :(得分:2)

没有中立的比利时文化。比利时的中立文化是nl(荷兰)。如果您需要区分比利时和荷兰文化,您需要获得特定文化 - 比利时nl-BE和荷兰nl-NL。这类似于en-USen-GB是英语特定文化的方式。如果您的用户的浏览器只定义了中性文化,那么您就不走运了。如果他有nl-BE作为他的当地文化,g.pickardou的答案可能有所帮助。另请注意,文化和UI文化的价值可能是一种荒谬的组合,例如,在我的计算机上,我有CurrentCulture en-GBCurrentUICulture en-US 。为了使这更加疯狂,我的浏览器具有cs-CZ的本地文化,因此在我的计算机上运行的服务器可以根据当前上下文获得这些可能的文化。

编辑:根据您的问题更新,您错误地了解了CurrentCulture在ASP.NET中的工作原理。它与您的IP地址无关,只与服务器设置或用户的浏览器设置有关。您当然可以通过覆盖InitializeCulture来进行地址查找,但这通常是一个坏主意。另外,正如我所说,没有中立的比利时文化 - be-NL不存在。事实上,be是白俄罗斯的中立文化。

答案 1 :(得分:0)

尝试改为:

 <globalization culture="auto" uiCulture="auto" enableClientBasedCulture="true"/>