Juan,

¿El silencio significa que se solucionó el problema o que te diste por vencido?

Saludos,

Fernando Tubio

  ----- Original Message ----- 
  From: Fernando Tubio 
  To: [email protected] 
  Sent: Friday, March 02, 2007 3:31 PM
  Subject: [puntonet] Culture Info


  ..."-independietemente de quien ejecute la pagina (IIS o VS), es-AR no 
deberia ser siempre dd/MM/yyyy ?"...

  No siempre. Esto depende de la configuración regional del usuario y si el 
thread se inicializa con un CultureInfo cuya propiedad UseUserOverride es igual 
a true. En ese caso, si la cultura corresponde a la cultura seleccionada por el 
usuario en su configuración regional, entonces se utilizan los valores que 
configuró el usuario.  Parecería que la cuenta ASPNET en tu máquina tiene 
asignada la cultura es-AR y además fue modificado su formato de fecha. No se 
como lograste esto ya que como nadie se loguea interactivamente con esta cuenta 
es difícil que la configuración cambie, asumiendo por supuesto que la 
configuración del default user de la máquina no sea así para empezar. 

  ..."-en ambos casos, como actual me aparece "invariant country", significa 
que lo del web.config no lo esta considerando?"...

  Esto si que no lo entiendo.  Si el web.config tiene configurado 'es-AR' para 
la cultura debería mostrar eso para el primer resultado. Hay algo que 
interfiere con la inicialización de la cultura. Cambiá el web.config de tal 
forma de inicializar con otra cultura, por ejemplo 'fr-FR' para comprobar si el 
resultado "Actual:" sigue mostrando 'Invariant Language' o cambia a 'French 
(France)'. 

  Otra cosa, no tendrás configurado algún HttpModule que esté modificando la 
cultura después de que ASP.NET hizo lo suyo? Verificá que es lo que se está 
cargando tanto en el web.config como en machine.config.

  Saludos,

  Fernando Tubio

  ----- Original Message ----- 

    From: Juan Granillo 
    To: [email protected] 
    Sent: Friday, March 02, 2007 1:33 PM
    Subject: [puntonet] Culture Info


    Hola Fernando, parece que la cosa viene por este lado. Si lo ejecuta el 
IIS, el resultado es

    Identidad: PCDEV\ASPNET

    Actual: - Invariant Language (Invariant Country)
    ShortDatePattern: MM/dd/yyyy
    Fecha: ERROR

    es-AR: es-AR - Spanish (Argentina)
    ShortDatePattern: M/d/yyyy
    Fecha: ERROR

    es-UY: es-UY - Spanish (Uruguay)
    ShortDatePattern: dd/MM/yyyy
    Fecha: 30/01/2007 12:00:00 a.m.

    en-US: en-US - English (United States)
    ShortDatePattern: M/d/yyyy
    Fecha: ERROR


    Si lo ejecuto en el servidor de VS

    Identidad: PCDEV\Juan

    Actual: - Invariant Language (Invariant Country)
    ShortDatePattern: MM/dd/yyyy
    Fecha: ERROR

    es-AR: es-AR - Spanish (Argentina)
    ShortDatePattern: dd/MM/yyyy
    Fecha: 30/01/2007 12:00:00 a.m.

    es-UY: es-UY - Spanish (Uruguay)
    ShortDatePattern: dd/MM/yyyy
    Fecha: 30/01/2007 12:00:00 a.m.

    en-US: en-US - English (United States)
    ShortDatePattern: M/d/yyyy
    Fecha: ERROR

    Por otro lado, en el web.config tengo 

    <globalization culture="es-ar" uiCulture="es-ar"/>

    Todo este tema me genera los siguientes interrogantes:

    -independietemente de quien ejecute la pagina (IIS o VS), es-AR no deberia 
ser siempre dd/MM/yyyy ?

    -en ambos casos, como actual me aparece "invariant country", significa que 
lo del web.config no lo esta considerando?

    Mucha gracias por tu ayuda.

    Saludos

    Juan









      -----Original Message-----
      From: [email protected] [mailto:[EMAIL PROTECTED] Behalf Of Fernando 
Tubio
      Sent: Jueves, 01 de Marzo de 2007 08:07 p.m.
      To: [email protected]
      Subject: [puntonet] Culture Info


      Hmmm... Muy extraño.

      De cualquier forma parece que al probar el código que envié hubo algún 
error de transcripción, ya que debería mostrar el texto "Actual" solo en el 
primer caso. Aunque no creo que esto vaya a afectar el resultado final, sería 
conveniente verificar el código, no vaya a ser que el diagnóstico nos 
desoriente aún más.

      El primer resultado es bastante extraño ya que corresponde al llamado a 
TestCulture con un parámetro nulo, es decir que si el código ejecutado coincide 
con aquel que envié, entonces en este caso en particular no debería inicializar 
la cultura de la página sino tomar el valor que ya viene configurado, y como se 
trata de la primera prueba, este es el valor que supuestamente ASP.NET asignó a 
partir de la configuración de web.config.  El resultado muestra que la cultura 
configurada corresponde a la 'Invariant Culture', o sea que fue inicializada 
con un string vacío (y *no* nulo).  

      El segundo resultado también es inesperado ya que muestra que la 
configuración de la cultura "es-AR" no es la habitual. 

      ¿Con cual servidor ocurre esto, IIS o el servidor de desarrollo que viene 
con Visual Studio? Si se trata del segundo, entonces hay que tener en cuenta 
que en ese caso el proceso ASP.NET ejecuta con la identidad del usuario 
logueado actualmente. Si la configuración regional de ese usuario fue 
modificada esto podría explicar los resultados que estás observando, aunque a 
primera vista no parece explicar el primer resultado.

      Modificá Page_Load de la siguiente forma para identificar el usuario con 
el cual ejecuta el proceso, de tal forma que puedas examinar su configuración 
regional.

          protected void Page_Load ( object sender, EventArgs e )
          {
              status.Text = "Identidad: "  + 
System.Security.Principal.WindowsIdentity.GetCurrent().Name +  "<br><br>"
                          + TestCulture( null ) 
                          + TestCulture( "es-AR" ) 
                          + TestCulture( "es-UY" ) 
                          + TestCulture( "en-US" );
          }


      Saludos,

      Fernando Tubio


      ----- Original Message ----- 
        From: Juan Granillo 
        To: [email protected] 
        Sent: Thursday, March 01, 2007 5:10 PM
        Subject: [puntonet] Culture Info


        Hola Fernando,
        esto es lo q sale

        Actual: - Invariant Language (Invariant Country)
        ShortDatePattern: MM/dd/yyyy
        Fecha: ERROR

        Actual: es-AR - Spanish (Argentina)
        ShortDatePattern: M/d/yyyy
        Fecha: ERROR

        Actual: es-UY - Spanish (Uruguay)
        ShortDatePattern: dd/MM/yyyy
        Fecha: 30/01/2007 12:00:00 a.m.

        Actual: en-US - English (United States)
        ShortDatePattern: M/d/yyyy
        Fecha: ERROR

        como veras, el es-AR lo pone como M/d/yyyy

        Saludos

        Juan
          -----Original Message-----
          From: [email protected] [mailto:[EMAIL PROTECTED] Behalf Of 
Fernando Tubio
          Sent: Jueves, 01 de Marzo de 2007 03:32 p.m.
          To: [email protected]
          Subject: [puntonet] Culture Info


          Juan,

          ¿Que sucede cuando se ejecuta el siguiente código?

          <%@ Page Language="C#" %>

          <script runat="server">

              private string TestCulture ( string cultureName )
              {        
                  if ( cultureName != null )
                      Culture = cultureName;
                      
                  DateTime date;
                  return (cultureName != null ? cultureName : "Actual") + ": " 
                          + System.Globalization.CultureInfo.CurrentCulture + " 
- " + Culture
                          + "<br>ShortDatePattern: " 
                          + 
System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern
                          + "<br>Fecha: " 
                          + (DateTime.TryParse( "30/01/2007", out date ) ? 
date.ToString( ) : "ERROR")
                          + "<br><br>";
              }
                  
              protected void Page_Load ( object sender, EventArgs e )
              {
                  status.Text = TestCulture( null ) 
                              + TestCulture( "es-AR" ) 
                              + TestCulture( "es-UY" ) 
                              + TestCulture( "en-US" );
              }
              
          </script>

          <html xmlns="http://www.w3.org/1999/xhtml"; >
          <head runat="server">
              <title>Untitled Page</title>
          </head>
          <body>
              <form id="form1" runat="server">
                  <asp:Label ID="status" runat="server" />
              </form>
          </body>
          </html>


          Saludos,

          Fernando Tubio

            ----- Original Message ----- 
            From: Juan Granillo 
            To: [email protected] 
            Sent: Thursday, March 01, 2007 12:13 PM
            Subject: [puntonet] Culture Info


            Hola lista,

            Tengo que validar que una fecha es valida en una pagina asp.net 
2.0. Agregue un comparevalidator, con operator=datatypecheck y type=date. El 
problema es que no me toma como valida una fecha 30/01/2007, pero si es valida 
01/30/2007. 
            Tengo configurado el web.config seteada con la cultura de 
argentina. 
            <globalization culture="es-AR" uiCulture="es-AR"/>

            si lo cambio a

            <globalization culture="es-UY" iCulture="es-UY"> (uruguay)

            el validador de fecha funciona bien, es decir, toma como valido 
30/01/2007, y no 01/30/2007. 

            Alguna idea de que puede estar fallando? o es un bug ?

            Saludos a todos

            Juan

Responder a