Bueno, esto es de estas cosas que crees que a ti no te van a pasar pero luego resulta que sí, que te pasan :-)

Y es que un cliente nuestro ha encontrado la aguja en el pajar. Una aplicación que teníamos producía un error inexplicable en un par de clientes de este cliente, y no sabíamos de qué era. Viendo el registro de errores pudimos llegar a dar con el problema.

Resulta que cuando el idioma del navegador del usuario es Búlgaro (bgt-BG) o Eslovaco (sk-SK) y tienes el cambio automático de cultura activado, el control RangeValidator puede romper si estás validando fechas. Sí, es que la aplicación que habíamos hecho está internacionalizada y nuestro cliente tiene clientes en todas partes de europa, así que...

Al producirse el error la página incluso deja de cargar, ya que rompe durante la asignación de los valores máximo y mínimo si éstos se establecen mediante código (como es normal cuando se trata de fechas).

El problema es que en estos países el formato de fechas es raro de narices (algo así, "11. 4. 2008 r.", fíjate enlos espacios tras los puntos) y el validador se vuelve loc y no es capaz de interpretarlas. Sin embargo la clase DateTime con su método Parse sí que es capaz por lo que hace sospechar del modo en el que está implementado el validador :-(

Lo curioso del tema es que este error estaba ya controlado por Microsoft en ASP.NET 1.1 (http://support.microsoft.com/kb/937096/en-us), pero por lo que se ve no se solucionó del todo en las otras versiones. Ahora funciona con el húngaro pero no con el búlgaro ni el esloveno.

La única forma que he encontrado a bote pronto para solucionarlo es asignar las fechas en la carga a las propiedades de rango usando el formato habitual en castellano (dd/mm/aaaa), que es reconiocido sin problemas aunque el local sea uno de los conflictivos.

Ya he notificado el bug a Microsoft, así que a ver si lo solucionan definitivamente para un próximo Service Pack o para un parche específico.

ACTUALIZACIÓN (7-Mayo-2008):

Hoy me han escrito desde el equipo de desarrollo de ASP.NET para decirme que ya tienen el bug corregido y que será incluido en el Service Pack 1 de .NET Framework 3.5 (que incluye también a .NET 2.0).

Escrito por un humano, no por una IA