none
Problemas con WCF y WF7 RRS feed

  • Pregunta

  • Hola a todos, estoy iniciándome en WF7 y WCF para hacer consultas a un servidor MySQL pero me encuentro con algunos problemas. Para inicarme empezé por crear un proyecto WCF común sin modificar nada, el cual compilé y añadí a otro proyecto básico de Windows Phone 7, mediante "Service Reference". Vamos, todo básico sin empezar con el MySQL ni nada.

    Al proyecto WF7 le añadí un botón con el siguiente código:

    private void button1_Click(object sender, RoutedEventArgs e)
            {
                ServiceReference1.Service1Client proxy = new ServiceReference1.Service1Client();
                
                proxy.GetDataCompleted += new EventHandler<ServiceReference1.GetDataCompletedEventArgs>(proxy_GetDataCompleted);
     
                proxy.GetDataAsync(25);
            }
     
            private void proxy_GetDataCompleted(object sender, ServiceReference1.GetDataCompletedEventArgs e)
            {
                if (e.Error == null)
                {
                    MessageBox.Show(e.Result.ToString());
                }
            }

    El problema que tengo es que cuando ejecuto el WCF y luego la apliación WF7, al hacer clic en el botón de la aplicación, me da el siguiente error:

    There was no endpoint listening at http://localhost:2665/Service1.svc that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.

    Además, mediante el "Cliente de Prueba WCF" he comprobado el servicio, y en principio va bien.

     

    ¿Álguien sabe por donde van los tiro?. Muchas gracias a todos.

     

    Por cierto, si sabéis alguna manera de hacer consultas a un servidor MySQL que sea más sencillo que WCF, agradecería que me lo comentasen.

     

    jueves, 7 de abril de 2011 20:34

Respuestas

  • Buenas!

    A que te refieres cuando dices que ejecutas el servicio WCF?

    En principio, el problema es que está intentando conectar con el servicio en la direcction: http://localhost:2665/Service1.svc y no lo encuentra, lo tienes ejecutando en esa dirección?

    No tienes que arrancar el servicio por separado, si tienes el servicio y el proyecto wp7 en la misma solución, arrancando el proyecto wp7 debería levantar el servicio. Si no están en la misma solución, fijate en que dirección lo está levantando y despues modifica el app.config de la aplicación wp7 para buscar el servicio en esa dirección.

    Con respecto a MySQL la forma que existe es mediante servicios WCF. Un saludo!


    MCTS .NET Framework 3.5 Windows Forms Application Development
    MCTS .NET Framework 3.5 Windows Presentation Foundation
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    • Marcado como respuesta Spaikers viernes, 8 de abril de 2011 22:39
    • Desmarcado como respuesta Spaikers viernes, 8 de abril de 2011 22:39
    • Marcado como respuesta Spaikers domingo, 10 de abril de 2011 15:43
    viernes, 8 de abril de 2011 4:43
    Moderador

Todas las respuestas

  • Buenas!

    A que te refieres cuando dices que ejecutas el servicio WCF?

    En principio, el problema es que está intentando conectar con el servicio en la direcction: http://localhost:2665/Service1.svc y no lo encuentra, lo tienes ejecutando en esa dirección?

    No tienes que arrancar el servicio por separado, si tienes el servicio y el proyecto wp7 en la misma solución, arrancando el proyecto wp7 debería levantar el servicio. Si no están en la misma solución, fijate en que dirección lo está levantando y despues modifica el app.config de la aplicación wp7 para buscar el servicio en esa dirección.

    Con respecto a MySQL la forma que existe es mediante servicios WCF. Un saludo!


    MCTS .NET Framework 3.5 Windows Forms Application Development
    MCTS .NET Framework 3.5 Windows Presentation Foundation
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    • Marcado como respuesta Spaikers viernes, 8 de abril de 2011 22:39
    • Desmarcado como respuesta Spaikers viernes, 8 de abril de 2011 22:39
    • Marcado como respuesta Spaikers domingo, 10 de abril de 2011 15:43
    viernes, 8 de abril de 2011 4:43
    Moderador
  • En principio si lo tengo ejecutado en dicha dirección. He realizado dos proyectos, uno junto con el proyecto WP7 y otro por separado, pero sigue igual. Cuando me refiero ejecutar el servicio, en realidad es levantarlo.

    El archivo app.config no lo encuentro en la aplicación, no se si es que te confundistes con el nombre o el proyecto está mal. En cualquier caso, te lo envío directo para compilar y si no te importa le hechas un vistazo.

    http://www.megaupload.com/?d=HZQC6WMC

    Muchas gracias Yosue.

    viernes, 8 de abril de 2011 8:43
  • Buenas!

    perdona, el archivo al que me refería es el ServiceReferences.ClientConfig

    De todas formas, he descargado tu proyecto, he ejecutado el proyecto de WP7 directamente sin levantar el servicio (Visual Studio lo levanta por si mismo) y me ha funcionado perfectamente!! sin tocar nada, he presionado el botón que tienes en la cabecera y hace todo perfectamente...

    Te da el error en algun otro sitio???


    MCTS .NET Framework 3.5 Windows Forms Application Development
    MCTS .NET Framework 3.5 Windows Presentation Foundation
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    viernes, 8 de abril de 2011 9:35
    Moderador
  • Que tal Josue, te comento,

    Observando que a tí si te funcionaba perfectamente y que en internet habían ejemplos algo básicos sobre el tema, pensé que algo debía estar haciendo mal. Vamos, que el error era tan tonto (aunque te digo que estoy empezando con WF7 y el tema WCF) que no me había fijado que para hacer la pruebas uso un dispositivo y no el emulador, por lo que el servicio no podía ser http://localhost:2665/Service1.svc, sino que tenía que especifiar la ip del servicio.

    Vamos, un dato absurdo que me acarreó multiples problemas.

     

    Para finalizar me gustaría que me dieses una idea de como obtener una tabla completa de la base de datos, es decir, siempre he usado los DataSet y los DataTables, pero en vista de que todo esto me resulta nuevo y que WP7 no permite ADO.NET aún, no sé cual será la mejor manera. Por ejemplo ahora mismo uso lo siguiente:

            public string leerTabla(string tabla)
            {
                MySqlConnectionStringBuilder datosConexion = new MySqlConnectionStringBuilder();
                datosConexion.Port = 3306;
                datosConexion.Server = "localhost";
                datosConexion.Database = "";
                datosConexion.UserID = "root";
                datosConexion.Password = "password";
                datosConexion.CharacterSet = "utf8";
                Conexion = new MySqlConnection(datosConexion.ToString());
                Conexion.Open();
     
                MySqlDataAdapter adapter = new MySqlDataAdapter();
                adapter.SelectCommand = new MySqlCommand("SELECT * FROM dbempresa.familias", Conexion);
                adapter.Fill(DTTabla);
     
                Conexion.Close();
     
                return DTTabla.Rows[0][0].ToString();
            }

    Como ves, tan sólo obtengo un valor de una celda, pero me interesa traer directamente la tabla, aunque para ello tenga que crear algún objeto.

    ¿Consideras que la mejor forma sería crear un objeto con los campos de la tabla que serían las filas y a su vez agrupar dichos objetos en un List como si fuese la tabla?

    ¿Hay alguna manera más rápida?

    ¿Cómo lo vés?

     

    Saludos Josue y muuuchas gracias.


    viernes, 8 de abril de 2011 22:39
  • Buenas:

    "¿Consideras que la mejor forma sería crear un objeto con los campos de la tabla que serían las filas y a su vez agrupar dichos objetos en un List como si fuese la tabla?"

    Esto que comentas es una opción totalmente válida, pero lo que se suele hacer es usar un orm como Entity Framework que nos simplifica mucho la vida y crea ya objetos mapeados a partir de tu base de datos.

    Aun así, lo que comentas de crear objetos agrupados en listas es una opción totalmente válida.

    Un saludo!


    MCTS .NET Framework 3.5 Windows Forms Application Development
    MCTS .NET Framework 3.5 Windows Presentation Foundation
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    domingo, 10 de abril de 2011 12:58
    Moderador
  • Ok, estoy aprendiendo algo sobre el Entity Framework y creo que es lo más recomendable ya que me hace gran parte de las tareas.

     

    Ante todo, muchas gracias por tu tiempo dedicado Josue y un enorme saludo por ayudarme.

    Gracias.

    domingo, 10 de abril de 2011 15:44