4

我有一个小型 ASP.NET MVC 站点,它显示员工的工资详细信息。

<td align="right">@String.Format("{0:c}", Model.Salary)</td>

在我的本地机器上,这显示很好,例如 66,000 英镑,但是当上传到 Azure 时,它​​显示为一美元,例如 66,000 美元。

设置时,我选择了西欧作为我的位置,但显然我需要做其他事情才能以英镑显示。有任何想法吗?

4

3 回答 3

19

您需要在 web.config 中的应用程序级别设置特定的文化,如下所示

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

或者,您也可以 在 global.asax 文件中设置如下Application_PreRequestHandlerExecute()

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
于 2012-12-13T11:43:10.753 回答
2

此问题与 Windows Azure 无关,而只是归结为本地化(您机器上的默认文化可能与 Windows Azure 中的不同)。尝试将文化更改为 en-GB:

public ActionResult DoSomething()
{
    System.Threading.Thread.CurrentThread.CurrentCulture
        = new System.Globalization.CultureInfo("en-GB");
    System.Threading.Thread.CurrentThread.CurrentUICulture
         = new System.Globalization.CultureInfo("en-GB");

    ...
    model.Salary = 66.000;
    return View(model)
}
于 2012-12-13T11:21:10.667 回答
1

我在尝试在 Azure 中使用 Microsoft HPC Server 2012 辅助角色时遇到了这个问题。我需要将每个向机器提交工作的用户设置为 en-GB 而不是 en-US,这主要是由于客户端应用程序中的日期格式问题。

我的解决方案是修改默认用户 NTUSER.DAT 文件,这是创建所有未来用户的模板。D:\Users\Default User\NTUSER.DAT尽管我们的物理服务器将它定位在 C中,但使用这个特定的工作角色,该文件被存储在其中。

除非您转到文件夹选项并取消选中隐藏受保护的操作系统文件并选中显示隐藏文件,否则您无法在 Windows 资源管理器中看到该文件。

然后,您可以对用户注册表项进行任何更改,下一个创建配置文件的用户将继承这些设置。由于 Azure 启动脚本在创建任何本地用户之前运行,因此您可以强制所有新用户继承这些默认值。

这是一个 PowerShell 脚本,可确保 Azure Worker 角色使用 en-GB 而不是 en-US

[CmdletBinding(SupportsShouldProcess=$True)]
Param(
  [string]
  $NTUserDatPath = "D:\Users\Default User\NTUSER.DAT"
  )

If(!(Test-Path $NTUserDatPath)){
   " Write-Error $NTUserDatPath incorrect"
}

REG load HKLM\TempHive $NTUserDatPath

$Default = "HKLM:\TempHive\Control Panel\International"

Set-ItemProperty -Path $Default -Name "iCountry" -Value "44" -Force
Set-ItemProperty -Path $Default -Name "Locale" -Value "00000809" -Force
Set-ItemProperty -Path $Default -Name "LocaleName" -Value "en-GB" -Force
Set-ItemProperty -Path $Default -Name "sCountry" -Value "United Kingdom" -Force
Set-ItemProperty -Path $Default -Name "sCurrency" -Value "£" -Force
Set-ItemProperty -Path $Default -Name "sLanguage" -Value "ENG" -Force
Set-ItemProperty -Path $Default -Name "sLongDate" -Value "dd MMMM yyyy" -Force
Set-ItemProperty -Path $Default -Name "sShortDate" -Value "dd/MM/yyyy" -Force
Set-ItemProperty -Path $Default -Name "sTimeFormat" -Value "HH:mm:ss" -Force
Set-ItemProperty -Path $Default -Name "sShortTime" -Value "HH:mm" -Force
Set-ItemProperty -Path $Default -Name "iDate" -Value "1" -Force
Set-ItemProperty -Path $Default -Name "iFirstDayOfWeek" -Value "0" -Force 
Set-ItemProperty -Path $Default -Name "iFirstWeekOfYear" -Value "2" -Force
Set-ItemProperty -Path $Default -Name "iMeasure" -Value "0" -Force
Set-ItemProperty -Path $Default -Name "iNegCurr" -Value "1" -Force
Set-ItemProperty -Path $Default -Name "iPaperSize" -Value "9" -Force
Set-ItemProperty -Path $Default -Name "iTime" -Value "1" -Force
Set-ItemProperty -Path $Default -Name "iTLZero" -Value "1" -Force

REG unload HKLM\TempHive 

这是实时的 GitHub 版本

于 2016-09-12T09:59:45.903 回答