entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

[Consulta] Servicio WCF

Hola buen dia, el dia de hoy vengo con una consulta que me esta dando vueltas el problema es que ya he podido crear los servicios WCF para poder consumirlas desde un aplicativo en Xamarin estoy tratando de de devolver la lista de los objetos pero estos no me los reconoce al consumirlo, ya he tratado de todo no se si me puedan ayudar a encontrar mi error.

Mi Interfaz del Servicio

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.Web.Script.Services;
using System.ServiceModel.Web;

namespace ServicesWCF
{

    [ServiceContract]
    public interface IServiceProductos
    {
        [OperationContract]
   List<Productos> GetProductosFindByID(Productos InObject);
    }

    [DataContract]
    public class Productos
    {
        [DataMember]
        public int id { get; set; }
        [DataMember]
        public String IdProducto { get; set; }
        [DataMember]
        public String CodigoBarras { get; set; }
        [DataMember]
        public String Descripcion { get; set; }
        [DataMember]
        public String DescripcionLarga { get; set; }
        [DataMember]
        public String TipoProducto { get; set; }
        [DataMember]
        public String TipoGrupo { get; set; }
        [DataMember]
        public int IdTalla { get; set; }
        [DataMember]
        public String ClaveParteBase { get; set; }
        [DataMember]
        public String ClaveParteTalla { get; set; }
        [DataMember]
        public int IdUnidad { get; set; }
        [DataMember]
        public decimal Empaque { get; set; }
        [DataMember]
        public decimal Peso { get; set; }
        [DataMember]
        public decimal Volumen { get; set; }
        [DataMember]
        public String ManejaLotes { get; set; }
        [DataMember]
        public String TipoCosteo { get; set; }
        [DataMember]
        public int IdFamilia { get; set; }
        [DataMember]
        public int IdGrupo { get; set; }
        [DataMember]
        public int Caracteristica1 { get; set; }
        [DataMember]
        public int Caracteristica2 { get; set; }
        [DataMember]
        public int Caracteristica3 { get; set; }
        [DataMember]
        public int Caracteristica4 { get; set; }
        [DataMember]
        public int Caracteristica5 { get; set; }
        [DataMember]
        public int Caracteristica6 { get; set; }
        [DataMember]
        public int EnlaceSIMAC { get; set; }
        [DataMember]
        public String RutaImagen { get; set; }
        [DataMember]
        public String IdClienteProveedor { get; set; }
        [DataMember]
        public decimal Empaqueint { get; set; }
        [DataMember]
        public bool CalcularPrecio { get; set; }
        [DataMember]
        public int IdUnidadFactor { get; set; }
        [DataMember]
        public int IdFactorConsumo { get; set; }
        [DataMember]
        public decimal Alto { get; set; }
        [DataMember]
        public decimal Ancho { get; set; }
        [DataMember]
        public int Mascara { get; set; }

    }

}

El Codigo de mi clase implementadora

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using Entities;
using Business;
using Commun;
using System.Data;
using System.Linq;
using System.ServiceModel.Web;

namespace ServicesWCF
{
    // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de clase "ServiceProductos" 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 ServiceProductos.svc o ServiceProductos.svc.cs en el Explorador de soluciones e inicie la depuración.
    public class ServiceProductos : IServiceProductos
    {

        public List<Productos> GetProductosFindByID(Productos InObject)
        {
            Transactions buTransact = new Transactions();
            DataTable dtAdapter = new DataTable();
            dtAdapter = buTransact.SelectAll(InObject);

            IEnumerable<Productos> listItems = dtAdapter.DataTableToList<Productos>();
            List<Productos> js = listItems.ToList();
            return js;
        }

    }
}

Y mi metodo para consumirlo


        public void ConsumeServiceProducts(){
            ServiceProducts.ServiceProductos SrvProductos = new ServiceProducts.ServiceProductos ();
            ServiceProducts.Productos SendItem = new Estratega.Droid.ServiceProducts.Productos ();
            SendItem.IdProducto = (string)_inputSearch.Text;
            SrvProductos.GetProductosFindByIDAsync (SendItem);
            SrvProductos.GetProductosFindByIDCompleted += SrvProductos_GetProductosFindByIDCompleted;       
        }

Y el lugar donde no sale lo esperado es aqui:

  private void SrvProductos_GetProductosFindByIDCompleted(object sender, ServiceProducts.GetProductosFindByIDCompletedEventArgs e)
        {

            throw new System.NotImplementedException();
        }

ya que en el argumento de "e" me marca un error como si no se estuviera resolviendo bien el transporte de los datos ¿Alguna idea? :S

1 Respuesta

1voto

bl4z3r Puntos16850

Tu problema es que debes implementar un método para poder terminar de realizar la función que necesitas.

En todo tu código, no vi en ningún momento que hayas implementado(escrito código) para consumir el modelo de asincronismo basado en eventos.

Llamas a un método GetProductosFindByIDAsync donde es resuelto por .NET y luego debes asignar un manejador(un método) para el evento GetProductosFindByIDCompleted y manejes la respuesta del anterior método llamado.

Especulo que en el EventArgs debe estar el resultado de la operación anterior.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta