none
PARA LEANDRO --- WCF devuelve null RRS feed

  • Pregunta

  • Tengo un WCF que consumo a través de una aplicación xamarin FORMS, el WCF devuelve una lista con alrededor de entre 20 y 30 registros, dicha lista la devuelvo en formato json (es de cir un string jsoneado) pero al hacer debug devuelve null, pero si devuelvo por ejemplo un string como el siguiente  "123" o "algo" el resultado si es devuelto.

    Pareciera que si el string devuelto es corto si lo devuelve pero si es largo no lo hace.

    Tengo varios días intentando y no logro resolverlo.

    Alguna sugerencia?


    Si mi respuesta fue útil ayudame marcándola como correcta.


    martes, 22 de mayo de 2018 16:01

Todas las respuestas

  • Nadie?

    Si mi respuesta fue útil ayudame marcándola como correcta.

    martes, 22 de mayo de 2018 18:40
  • Hola. Puedes poner un ejemplo de tu problema ? También sería necesario ver la configuración de tu servicio WCF y del cliente que lo consume. 

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

    martes, 22 de mayo de 2018 20:08
  • Este es el codigo de la clase  que contiene el metodo que consumo desde la app xamarin FORMS

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.Text;

    using Newtonsoft.Json;

    namespace WSAPPALGOESTUDIANTIL
    {
        // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de clase "Consultar" en el código, en svc y en el archivo de configuración a la vez.
        // NOTA: para iniciar el Cliente de prueba WCF para probar este servicio, seleccione Consultar.svc o Consultar.svc.cs en el Explorador de soluciones e inicie la depuración.
        
        public class Consultar : IConsultar
        {
            public List<Entidades.CONSULTARCALIFICACIONESACTUALES> ConsultarCalificacionesActuales(string Matricula)
            {
                List<Trans.Entidad.APPALGOEST_CONSULTARCALIFICACIONESACTUALES_Result> lista = new List<Trans.Entidad.APPALGOEST_CONSULTARCALIFICACIONESACTUALES_Result>();
                lista = Trans.BLL.BTransacciones.ConsultarCalificacionesActuales(Matricula);

                List<Entidades.CONSULTARCALIFICACIONESACTUALES> lista_resultado = new List<Entidades.CONSULTARCALIFICACIONESACTUALES>();

                for (int i = 0; i < lista.Count; i++)
                {
                    Entidades.CONSULTARCALIFICACIONESACTUALES record = new Entidades.CONSULTARCALIFICACIONESACTUALES()
                    {
                        ANO = lista[i].ANO,
                        PERIODOMESES = lista[i].PERIODOMESES,
                        MATRICULA = lista[i].MATRICULA,
                        CVEMATERIA = lista[i].CVEMATERIA,
                        NOMBREMATERIA = lista[i].NOMBREMATERIA,
                        CALIFICACION1 = lista[i].CALIFICACION1,
                        CALIFICACION2 = lista[i].CALIFICACION2,
                        CALIFICACION3 = lista[i].CALIFICACION3,
                        CALIFICACION4 = lista[i].CALIFICACION4,
                        CALIFICACIONFINAL = lista[i].CALIFICACIONFINAL

                    };

                    lista_resultado.Add(record);
                }

                return lista_resultado;
            }
        }
    }

      

    y este el codigo de la interface

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.Text;

    namespace WSAPPALGOESTUDIANTIL
    {
        // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de interfaz "IConsultar" en el código y en el archivo de configuración a la vez.
        [ServiceContract]
        public interface IConsultar
        {
            [OperationContract]
            List<Entidades.CONSULTARCALIFICACIONESACTUALES> ConsultarCalificacionesActuales(string Matricula);
        }        
    }

     y de esta forma lo consumo desde xamarin

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    using Xamarin.Forms;
    using Xamarin.Forms.Xaml;

    namespace APPCALGOESTUDIANTIL.Calificaciones
    {
        [XamlCompilation(XamlCompilationOptions.Compile)]
        public partial class CalificacionPeriodoActualxaml : ContentPage
        {
            WCONSULTAR.ConsultarClient cc = new WCONSULTAR.ConsultarClient();
            public CalificacionPeriodoActualxaml()
            {
                InitializeComponent();

                b_prueba.Clicked += B_prueba_Clicked;

                cc.ConsultarCalificacionesActualesCompleted += Cc_ConsultarCalificacionesActualesCompleted;
            }

            private void Cc_ConsultarCalificacionesActualesCompleted(object sender, WCONSULTAR.ConsultarCalificacionesActualesCompletedEventArgs e)
            {
                var algo = e.Result; ------------------------------Aqui devuelve null
            }

            private void B_prueba_Clicked(object sender, EventArgs e)
            {
                cc.ConsultarCalificacionesActualesAsync("012345");    
            }
        }
    }


    Si mi respuesta fue útil ayudame marcándola como correcta.

    • Propuesto como respuesta Sergio Parra martes, 22 de mayo de 2018 23:09
    • Votado como útil Sergio Parra martes, 22 de mayo de 2018 23:09
    martes, 22 de mayo de 2018 21:42
  • Cambia esta línea

     cc.ConsultarCalificacionesActualesCompleted += Cc_ConsultarCalificacionesActualesCompleted;

    Por la siguiente

     cc.ConsultarCalificacionesActualesCompleted += new EventHandler<WCONSULTAR.ConsultarCalificacionesActualesCompletedEventArgs>(Cc_ConsultarCalificacionesActualesCompleted) ;


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

    martes, 22 de mayo de 2018 22:48
  • Pasa lo mismo ahora me devuelve referencia no establecida como ......

    eso dice el error el asunto es que si debuggeo el wcf en consola si devuelve algo pero si utilizo el telefono movil regresa ese errorr.

    Alguna otra sugerencia?


    Si mi respuesta fue útil ayudame marcándola como correcta.

    martes, 22 de mayo de 2018 22:57
  • Si, instancia el cliente web el método en el cual vas a usarlo y establece el manejador.

    private void B_prueba_Clicked(object sender, EventArgs e)
    {
         WCONSULTAR.ConsultarClient cc = new WCONSULTAR.ConsultarClient();
    
         cc.ConsultarCalificacionesActualesCompleted += new EventHandler<WCONSULTAR.ConsultarCalificacionesActualesCompletedEventArgs>(Cc_ConsultarCalificacionesActualesCompleted) ;
      
        cc.ConsultarCalificacionesActualesAsync("012345");    
    }



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

    martes, 22 de mayo de 2018 23:11
  • Sigue marcando lo mismo.

    Existe forma de poder interactuar mas rapido? algun correo? o por skype?


    Si mi respuesta fue útil ayudame marcándola como correcta.

    martes, 22 de mayo de 2018 23:25
  • Hice un cambio para tratar de devolver un strin de Json pero me devuelve siempre null y el wcf si funca si lo debuggeo y si trae resultado. En la app devuelve null.

    Si mi respuesta fue útil ayudame marcándola como correcta.

    martes, 22 de mayo de 2018 23:30
  • Puedes intentar aplicar 

    The task-based asynchronous pattern

    private async Task B_prueba_Clicked(object sender, EventArgs e)
    {
         WCONSULTAR.ConsultarClient cc = new WCONSULTAR.ConsultarClient();
    
        var algo = await cc.ConsultarCalificacionesActualesAsync("012345");    
    }


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

    martes, 22 de mayo de 2018 23:33
  • me marca este error "cannot await void".



    Si mi respuesta fue útil ayudame marcándola como correcta.

    miércoles, 23 de mayo de 2018 0:00
  • Puedes ver la definición de ese método

    ConsultarCalificacionesActualesAsync

    Y ver si devuelve algo? También intenta usar el método pero cuyo nombre no acaba en Async


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

    miércoles, 23 de mayo de 2018 0:11
  • La definicion es esta.

    public void ConsultarCalificacionesActualesAsync(string Matricula) {
                this.ConsultarCalificacionesActualesAsync(Matricula, null);
            }

    y no hay uno que no tenga async.


    Si mi respuesta fue útil ayudame marcándola como correcta.

    miércoles, 23 de mayo de 2018 0:23

  • Si mi respuesta fue útil ayudame marcándola como correcta.

    miércoles, 23 de mayo de 2018 16:24
  • I made a video with my problem.

    https://www.youtube.com/watch?v=9vF--BKMla8&feature=youtu.be

    This is the description of the video.

    This is my web service (wcf aplication)

    first I debugge it from the mobile the WCF returns a string "123"

    up here all right but if I return a string JSON marks an error


    now debugge the web service and see if it returns the json string correctly

    Is that what any suggestion happens? I would appreciate it
    I had done this before returning results and had no problems.

    Si mi respuesta fue útil ayudame marcándola como correcta.

    miércoles, 23 de mayo de 2018 16:25