Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Change Default Locale in IIS 6.0

I've got a hosted VPS hosted by a UK hosting company that for some reason is set to US settings. In fact, until recently, the regional settings were 'English - United States'. I've corrected the regional settings, but my application is still working with the wrong date format. See:

http://www.albaassoc.com/events/listevents.aspx

The default dates are supposed to be the current date to the date + 3 months, but as you can see, the dd and MM fields are swapped. Note: the AJAX calendar extender is manually set to dd/MM/yyyy so that is why the calendar pop thinks we are interested in June/July rather than January!

I know there are various ways to set a page or an application to use a particular locale, but I'd rather go for a global approach.

Is it possible to re-configure IIS to work in a different locale, or if not, can I tweak machine.config so that it is a once-only change?

I've got a ticket open with the host but I'm not going to hold my breath - they aren't going to want to reinstall IIS...

Thanks in advance.

like image 885
CJM Avatar asked Jan 06 '09 17:01

CJM


4 Answers

Via the globalization element, you can set the culture and uiculture for a site (via web.config) or the entire machine (via machine.config).

like image 191
Robert C. Barth Avatar answered Oct 14 '22 10:10

Robert C. Barth


I just got a similar issue (Windows Server 2008, IIS 7). I was able to fix it by editing the web config file, but like you I wanted a global fix.

The solution is in the config panel, regional settings. I don't know for you (what's your OS), but under WS2008, there is an administrative tab under regional settings. It allows you to copy the settings of your logged in user (you) to the administrative accounts (network services in this case). Rebooted and got it right.

like image 37
Nicolas Cadilhac Avatar answered Oct 14 '22 10:10

Nicolas Cadilhac


Bit of an old thread, but I still look after some legacy Classic ASP sites written by the now defunct Aztec civilisation in praise of their feathered gods.

A server move prevented all the date code from working and sacrificing a chicken was no help, so here is the very easy solution in IIS 7 that has not been mentioned, possibly because no-one else is suffering like me.

  1. Go to IIS Manager.
  2. Select either the root server node to apply to all sites, or select the site node you are having problems with if you want to leave the server default alone.
  3. In IIS section, double click ASP icon.
  4. Set Locale ID to your desired locale (2057 for UK).

This should take effect immediately.

Alternatively you could go buy a DeLorean, go back in time and kill the programmer who decided FormateDateTime(d, vbLongDate) was the best way of generating a date to be used in the database. Or persuade the client to give me a lot of money to replace the whole thing. Either's good.

like image 2
Whelkaholism Avatar answered Oct 14 '22 09:10

Whelkaholism


The problem is often that the user running either IIS or the application pool your app belongs to is a system account which was created when the server was installed. They therefore inherited whatever the default locale was at the time.

If you can't fix it in regional and language options you can always try editing in the registry directly (with the usual proviso that messing around with the registry can seriously muck up Windows). The regional settings are all under HKEY_USERS\{userid}\Control Panel\International - if you compare what's there for each user with what you have under HKEY_CURRENT_USER\Control Panel\International it should be fairly obvious what to change. I've done this a few times on Windows 2000 servers and it's worked OK.

The other option is just to create a new user on the machine with the correct locale and then set both IIS and the application pool to run with that identity.

like image 4
robertc Avatar answered Oct 14 '22 09:10

robertc