Usuario
PARA LEANDRO --- WCF devuelve null

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.
- Editado PIO DEVELOPER martes, 22 de mayo de 2018 19:15
Todas las respuestas
-
-
-
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
-
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
-
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.
-
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
-
-
-
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
-
-
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
-
-
-
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.