none
Como setear Nullable Boolean creado por WebReference RRS feed

  • Pregunta

  • Tengo un web service (funciona bien y lo puedo verificar con SOAP UI) que estoy tratando de consumir como una web reference (asmx con Net. Framework 3.5).
    He creado la web reference y he instanciado las variables que necesitan el método.

    El web reference ha creado el objeto nullable<boolean> de la siguiente manera: 

    [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
            public System.Nullable<bool> resendDue {
                get
                {
                    return this.resendDue;
                }
                set {
                    this.resendDue = value;
                }
            }
    Y luego en mi asmx donde estoy instanciando al servicio web, lo tenía seteado de esta forma:

             baseTran.resendDue  = Convert.ToBoolean(0);

    No funcionó.

    Probé de esta manera:

            ?resendDue                 = Convert.ToBoolean(0);
            baseTran.resendDue     = resendDue;

    Tampoco funcionó.

    (baseTran es una clase parcial generada por la web reference donde resendDue esta declarado como un System.Nullable<bool>).

    ¿Como sé que no funciona? pues tengo un trace log agregado donde veo el request generado y comparando con el request que si me funciona por SOAP UI, me doy cuenta que el nodo (resendDue) con esta variable Nullabe, no está, entonces el webservice envía error porque no aparece este nodo (Lo he verificado con SOAP UI agregandolo manualmente). 

    <resendDue>0</resendDue>

    Pensé que podía modificar el tipo de variable en el web reference, pero se arruina cuando lo cambio a boolean normal, deja de funcionar el webservice, además si actualizo el web reference se modificaría nuevamente, no serviría.

    Creo que mi problema esta en no saber setear estos valores, en internet dicen que no cambia en nada su forma de setear, pero luego el webservice por referencia no agrega el nodo con su valor, no entiendo porque.

    Necesito de su ayuda y orientación por favor.


    Saludos

    viernes, 24 de enero de 2020 16:31

Respuestas

  • hola

    >>Tengo un web service (funciona bien y lo puedo verificar con SOAP UI)

    es un web service creado con que tecnologia? es un asmx, WCF, etc

    >>luego en mi asmx donde estoy instanciando al servicio web, lo tenía seteado de esta forma

    Pero el asmx es un web service, se trata de un web service que invoca otro web service, o cual es el cliente, no deberia ser un aspx o sea un webform o quizas una aplicacion desktop

    Ademas alli veo que asignas el valor a la propiedad, que pasa si haces directo

             baseTran.resendDue  = false;

    digo porque convertir cero es lo mismo que false

    >>Lo he verificado con SOAP UI agregandolo manualmente

    Que pasa si quitas el nodo en el SOAPUI ? se produce el fallo o el web service lo toma como null

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 24 de enero de 2020 17:03
  • Leandro

    Teconología asmx de proyecto web service (es un webservice que consume otro webservice) es bajo tecnología NET framework 3.5 con web reference hacia el webservice que consume.

    baseTran.resendDue  = false; esto lo he probado de todas formas y no me funciona.

    Las variables que se crearon como nullables en el web reference, no las puedo instanciar (o no se hacerlo), es esta boolean y dos de datetime, cuando instancio este webservice referenciado y le asigno valores, no se crean estos 3 nodos.
    Que pasa si quitas el nodo en el SOAPUI ? si quito el nodo se produce el fallo que se genera por .NET


    Saludos

    lunes, 27 de enero de 2020 14:16
  • hola

    >>Las variables que se crearon como nullables en el web reference, no las puedo instanciar

    las variables no se instancia, lo que se acrea como nulable son propiedades del objeto que crea el proxy del web reference

    >>cuando instancio este webservice referenciado y le asigno valores, no se crean estos 3 nodos.

    eso no lo veo mal, en xml un nodo que no se asigna puede no definirse

    Null properties in asmx return value

    podrias aplicar lo que se comenta en el link

    [XmlElement(IsNullable = true)]
    public bool? resendDue;
    saludos

    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 27 de enero de 2020 14:29

Todas las respuestas

  • hola

    >>Tengo un web service (funciona bien y lo puedo verificar con SOAP UI)

    es un web service creado con que tecnologia? es un asmx, WCF, etc

    >>luego en mi asmx donde estoy instanciando al servicio web, lo tenía seteado de esta forma

    Pero el asmx es un web service, se trata de un web service que invoca otro web service, o cual es el cliente, no deberia ser un aspx o sea un webform o quizas una aplicacion desktop

    Ademas alli veo que asignas el valor a la propiedad, que pasa si haces directo

             baseTran.resendDue  = false;

    digo porque convertir cero es lo mismo que false

    >>Lo he verificado con SOAP UI agregandolo manualmente

    Que pasa si quitas el nodo en el SOAPUI ? se produce el fallo o el web service lo toma como null

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 24 de enero de 2020 17:03
  • Leandro

    Teconología asmx de proyecto web service (es un webservice que consume otro webservice) es bajo tecnología NET framework 3.5 con web reference hacia el webservice que consume.

    baseTran.resendDue  = false; esto lo he probado de todas formas y no me funciona.

    Las variables que se crearon como nullables en el web reference, no las puedo instanciar (o no se hacerlo), es esta boolean y dos de datetime, cuando instancio este webservice referenciado y le asigno valores, no se crean estos 3 nodos.
    Que pasa si quitas el nodo en el SOAPUI ? si quito el nodo se produce el fallo que se genera por .NET


    Saludos

    lunes, 27 de enero de 2020 14:16
  • hola

    >>Las variables que se crearon como nullables en el web reference, no las puedo instanciar

    las variables no se instancia, lo que se acrea como nulable son propiedades del objeto que crea el proxy del web reference

    >>cuando instancio este webservice referenciado y le asigno valores, no se crean estos 3 nodos.

    eso no lo veo mal, en xml un nodo que no se asigna puede no definirse

    Null properties in asmx return value

    podrias aplicar lo que se comenta en el link

    [XmlElement(IsNullable = true)]
    public bool? resendDue;
    saludos

    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 27 de enero de 2020 14:29