Este é um two-parter:
De link
"No IIS 7, os pools de aplicativos são executados em um dos dois modos: modo integrado e modo clássico. O modo de pool de aplicativos afeta como o servidor processa solicitações de código gerenciado. Se um aplicativo gerenciado for executado em um pool de aplicativos com modo integrado, o servidor usará os pipelines integrados de processamento de solicitações do IIS e do ASP.NET para processar a solicitação.No entanto, se um aplicativo gerenciado for executado em um pool de aplicativos com o modo clássico, o servidor continuará encaminhando solicitações de código gerenciado por meio do Aspnet_isapi. dll, processamento solicita o mesmo como se o aplicativo estava sendo executado no IIS 6.0. "
Algumas pessoas com problemas semelhantes tiveram algumas correções ao forçar o IIS 7 a processar os conjuntos de caracteres da maneira que desejavam. A essência disso é que o classic / IIS 6 está aceitando a codificação que você quer ter, mas em algum lugar do pipeline integrado / o IIS 7 está usando sua codificação padrão.
Isso fala sobre como definir a codificação da maneira que você deseja: link
Você provavelmente desejará coisas do fiddler / firebug para ver para que lado está indo (utf8 quando deveria ser ISO-8859-1 ou vice-versa).
Por último, mas não menos importante, um verdadeiro tratado sobre como o ASP.Net lida com problemas de globalização: link . É para o 2.0, mas na minha experiência, muitas coisas como essa levam adiante para versões posteriores e provavelmente são aplicáveis ao 4.0.