На основе этого кода (принятого/измененного с сайта Microsoft)...
int i = 100;
string op = "";
// Creates/Displays a CultureInfo for English in Belize.
CultureInfo bz = new CultureInfo("en-BZ");
op += (i.ToString("c", bz)) + "<br/>";
// Creates/Displays CultureInfo for English in GB.
CultureInfo gb = new CultureInfo("en-GB");
op += (i.ToString("c", gb)) + "<br/>";
// Creates/Displays a CultureInfo for English in the U.S.
CultureInfo us = new CultureInfo("en-US");
op += (i.ToString("c", us)) + "<br/>";
// Creates/Displays a CultureInfo for Danish in Denmark.
CultureInfo dk = new CultureInfo("da-DK");
op += (i.ToString("c", dk)) + "<br/>";
litOutput.Text = op;
пожалуйста, может кто-нибудь объяснить, почему это результат, который я получаю. (обратите внимание на третий, предположительно en-US)
BZ$100.00
£100.00
100,00 €
kr. 100,00
.. и что мне нужно сделать, чтобы исправить это. Это только проблема недавно, когда я думаю, что у кого-то была "игра" на сервере.
Обновление/дополнительная информация
Если я запускаю один и тот же код в автономном приложении на сервере, я получаю ожидаемые результаты для культуры США, это только когда код работает в ASPNet, что все странно.
ТИА.
После нескольких часов поиска, прочитав MS-страницу после MS-страницы, я наконец нашел ответ в реестре. Как только подумал, кто-то возился.
Настройки по умолчанию в HKEY_USERS/.DEFAULT/Control Panel/International
были изменены так, что код страны/имя/идентификатор все указывали на США, но форматы были европейскими.
Исправлена проблема с заменой их на правильные значения (либо путем замены страны на правильную, либо изменения формата в стиле США).
Спасибо за вашу помощь. Надеюсь, этот ответ поможет другим.