従業員の給与の詳細を表示する小さなASP.NETMVCサイトがあります。
<td align="right">@String.Format("{0:c}", Model.Salary)</td>
私のローカルマシンでは、これは正常に表示されます(例:£66,000)が、Azureにアップロードすると、1ドル(例:$ 66,000)で表示されます。
設定するとき、私は自分の場所として西ヨーロッパを選択しましたが、これを£sで表示するには、明らかに他のことをする必要があります。何か案は?
従業員の給与の詳細を表示する小さなASP.NETMVCサイトがあります。
<td align="right">@String.Format("{0:c}", Model.Salary)</td>
私のローカルマシンでは、これは正常に表示されます(例:£66,000)が、Azureにアップロードすると、1ドル(例:$ 66,000)で表示されます。
設定するとき、私は自分の場所として西ヨーロッパを選択しましたが、これを£sで表示するには、明らかに他のことをする必要があります。何か案は?
以下のように、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");
この問題はWindowsAzureとは関係ありませんが、ローカリゼーションに起因します(マシンのデフォルトのカルチャは、おそらく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)
}
AzureでMicrosoftHPCServer 2012ワーカーの役割を使用しようとすると、この問題が発生しました。主にクライアントアプリケーション内の日付フォーマットの問題のために、マシンに作業を送信したすべてのユーザーをen-USではなくen-GBに設定する必要がありました。
私の解決策は、デフォルトユーザーのNTUSER.DATファイルを修正することでした。これは、将来のすべてのユーザーが作成されるテンプレートです。この特定のワーカーロールを使用して、そのファイルはに保存されましD:\Users\Default User\NTUSER.DATたが、物理サーバーはそれをCに配置します。
フォルダオプションに移動し、[保護されたオペレーティングシステムファイルを非表示にする]をオフにして、[隠しファイルを表示する]をオンにしない限り、Windowsエクスプローラでそのファイルを表示することはできません。
次に、ユーザーレジストリキーに必要な変更を加えることができます。次にプロファイルを作成するユーザーは、それらの設定を継承します。Azureスタートアップスクリプトはローカルユーザーが作成される前に実行されるため、すべての新しいユーザーにこれらのデフォルトを継承させることができます。
これは、Azureワーカーの役割がen-USではなくen-GBを使用することを保証するPowerShellスクリプトです。
[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