none
Obtener fecha actual sin utilizar la fecha del sistema.con datetime c# RRS feed

  • Pregunta

  • Hola, estoy trabajando con WCF y pues necesito saber y como hacer  para que en un date time al ejercer una accion , ya sea dando clic al mismo o en un boton , cargue la fecha y hora actual , PERO , que NO utilice la del sistema ... Osea , porque saben que si cambian la fecha del sistema , cambiarian la fecha dentro del aplicativo, lo cual se presentaria para huecos de seguridad.

    Entonces la idea es utilizar la de mi servidor... Hay algunas lineas de code que me sirvan para esto ? , pueden ayudarme, estre muy agradecido.

    lunes, 27 de febrero de 2017 21:57

Respuestas

  • ¿Ejemplo de código? Es tan sencillo como esto:

    public DateTime ObtenerFechaDeServidor()
    {
        return DateTime.Now;
    }

    Obviamente, tienes que exponerlo hacia el cliente usando WCF en la misma manera que el resto de los métodos que ya tengas metidos en tu WCF, añadiendo su correspondiente [OperationContract] dentro del [ServiceContract] de la misma manera que el resto de los que ya tengas hechos. Después en el cliente vuelves a generar el proxy que ya debes haber construido la primera vez que configuraste el cliente para usar WCF, y ya puedes llamar a NombreDeTuServicio.ObtenerFechaDeServidor() cada vez que quieras obtener la fecha del servidor.

    martes, 28 de febrero de 2017 7:20
  • Hola. Aparte de lo comentado por Alberto, ten en cuenta donde vas a desplegar ese servicio wcf. Si es en azure o en un hosting de terceros la fecha del sistema dependerá de la región en donde está desplegado el servicio. Para ello envia desde el server en vez de DateTime.Now un DateTime.UtcNow. Luego desde tu cliente

    DateTime convertedDate = DateTime.SpecifyKind(
        serviceClient.ObtenerFechaServidor(),
        DateTimeKind.Utc);
    
    DateTime dt = convertedDate.ToLocalTime(); // aqui ya tienes tu fecha convertido teniendo comonreferencia tu configuración regional local


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    martes, 28 de febrero de 2017 9:11
    Moderador

Todas las respuestas

  • Simplemente, define en el lado servidor una función de tipo DateTime que devuelva el DateTime.Now. Esta será la fecha del servidor. En el lado cliente, haz una llamada por WCF a esa función, y así obtendrás la fecha del servidor.
    lunes, 27 de febrero de 2017 22:56
  • Podrias darme un ejemplo de code amigo, lo que pasa es que soy algo nuevo en el tema :( , gracias.
    martes, 28 de febrero de 2017 6:41
  • ¿Ejemplo de código? Es tan sencillo como esto:

    public DateTime ObtenerFechaDeServidor()
    {
        return DateTime.Now;
    }

    Obviamente, tienes que exponerlo hacia el cliente usando WCF en la misma manera que el resto de los métodos que ya tengas metidos en tu WCF, añadiendo su correspondiente [OperationContract] dentro del [ServiceContract] de la misma manera que el resto de los que ya tengas hechos. Después en el cliente vuelves a generar el proxy que ya debes haber construido la primera vez que configuraste el cliente para usar WCF, y ya puedes llamar a NombreDeTuServicio.ObtenerFechaDeServidor() cada vez que quieras obtener la fecha del servidor.

    martes, 28 de febrero de 2017 7:20
  • Hola. Aparte de lo comentado por Alberto, ten en cuenta donde vas a desplegar ese servicio wcf. Si es en azure o en un hosting de terceros la fecha del sistema dependerá de la región en donde está desplegado el servicio. Para ello envia desde el server en vez de DateTime.Now un DateTime.UtcNow. Luego desde tu cliente

    DateTime convertedDate = DateTime.SpecifyKind(
        serviceClient.ObtenerFechaServidor(),
        DateTimeKind.Utc);
    
    DateTime dt = convertedDate.ToLocalTime(); // aqui ya tienes tu fecha convertido teniendo comonreferencia tu configuración regional local


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    martes, 28 de febrero de 2017 9:11
    Moderador