Estoy trabajando en la limpieza de un error en una gran base de código donde nadie estaba prestando atención a la hora local frente a la hora UTC.Anular serialización de DateTime para los parámetros de WebMethod de ASP.NET
Lo que queremos es una forma de ignorar globalmente la información de zona horaria en los objetos DateTime enviados ay desde nuestros servicios web ASP.NET. Tengo una solución para operaciones de recuperación. Los datos solo se devuelven en conjuntos de datos, y puedo buscar columnas DateTime y configurar el DateTimeMode en Unspecified. Eso resuelve mi problema para todos los datos pasados dentro y fuera de un conjunto de datos.
Sin embargo, los objetos DateTime también se pasan a menudo directamente como parámetros a los métodos web. Me gustaría quitar cualquier información de zona horaria entrante. En lugar de buscar en nuestro código de cliente y usar DateTime.SpecifyKind (..) para establecer todos los valores de DateTime en Indefinido, me gustaría hacer algún tipo de anulación global de ASP.NET para monitorear los parámetros entrantes y eliminar la información de la zona horaria.
¿Es posible? ¿O hay otra forma más fácil de hacer lo que quiero hacer?
Solo para reiterar: no me importan las zonas horarias, todos están en la misma zona horaria. Pero un par de usuarios tienen máquinas mal configuradas, zonas horarias equivocadas, etc. Por lo tanto, cuando envían el 1 de julio de 2008, recibo el 30 de junio de 2008 a las 22:00:00 en el lado del servidor donde se está convirtiendo automáticamente de su hora local a la hora local del servidor.
Actualización: Otra posibilidad sería si fuera posible realizar un cambio en el lado del cliente del código .NET para alterar la forma en que los objetos DateTime con tipo 'No definido' se serializan.
No, queremos quitar la información de la zona horaria. No tenemos acceso a las instalaciones de los clientes, no podemos cambiar los datos de bases de datos preexistentes a la hora UTC debido a muchas aplicaciones diferentes que acceden a los datos. Si alguien selecciona el 1 de julio de un elemento de selección de fecha, no podemos permitir que llegue al servidor el 30 de junio. – Clyde
Aún así, esto no requiere un voto negativo. La respuesta es legítima en el alcance de la pregunta (la pregunta no especificó restricciones). –
-1 esta no fue la respuesta a su pregunta en absoluto, usted está haciendo suposiciones sobre los detalles de su proyecto. – Element