none
Error al tratar de implementar WCF desde Instalador... 'No se encontro el elemento de extremo predeterminado que hace referencia al contrato ‘WSHttpBinding_IServicio1’ RRS feed

  • Pregunta

  • Hola como están… Tengo creado un servicio WCF el cual se encuentra hospedado en el IIS y funcionando perfectamente.

    Tambien tengo una aplicación en C# la cual consume dichos servicios, esta funciona bien, el pero esta en que. Al momento de instalar dicha aplicación, tengo un formulario el cual se muestra mediante una clase Installer que use mi instalador de Visual Studio. En este formulario configure las direcciones de los servicios y aparte tengo que hacer una conexión al mismo servicio para implementar un método.

    Asi modifico las rutas de mis servicios.

    string rutaServicio1 = "http://" + txtDireccionServicio.Text + "/Servicio1.svc" ;                               

    string rutaServicio2 = "http://" + txtDireccionServicio.Text + "/Servicio2.svc" ;                               

     

                    Configuration archivoConfiguracion = ConfigurationManager .OpenExeConfiguration(ruta);

                    ServiceModelSectionGroup servicesModelSectionGroup = ServiceModelSectionGroup .GetSectionGroup(archivoConfiguracion);

     

                    foreach (ChannelEndpointElement channelEndpointElement in servicesModelSectionGroup.Client.Endpoints)

                    {

                        switch (channelEndpointElement.Name)

                         {

                            case "WSHttpBinding_IConfiguracion" :

                                channelEndpointElement.Address = new Uri (rutaServicio1);

                                break ;

     

                            case "WSHttpBinding_ILogs" :

                                channelEndpointElement.Address = new Uri (rutaServicio2);

                                break ;

                        }

                    }

                    archivoConfiguracion.Save();

     

    Esto funciona perfectamente, y me modifica mi archivo .config bien… Luego de este metodo ejecuto el siguiente.

     

    void AsignarAgencia()

            {

                string rutaServicio = "http://" + txtDireccionServicio.Text + "/Servicio1.svc" ;

                ServiceClient MiServicio = new ServiceClient ("WSHttpBinding_IServicio1" , new EndpointAddress (rutaServicio));

     

                try

                {

                    string variable = Miservicio.Metodo();             

                }

                catch (Exception ex)

                {

                    Mi Servicio.Abort();

                }

            }

    Ese metodo lo puedo ejecutar sin ningun problema en modo Debug con el Visual Studio, pero cuando lo hago desde mi instalador me da error la línea subrayada y me dice…

    “ No se encontro el elemento de extremo predeterminado que hace referencia al contrato ‘WSHttpBinding_IServicio1’ en la sección de configuración de cliente de ServiceModel. La razon puede ser que no se encontro ningun archivo de configuracion para la aplicacion o que no se encontro ningun elemento de extremo correspondiente a este contrato en el elemento de cliente.”

     

    Lo que yo puedo suponer es que el esta tratando de leer el archivo .config en Windows/System32 ya que esa es la ruta relativa de los instaladores.

    Como podría decirle que tome mi .cofig el cual se recién instalo, es decir, algo asi…

     

                    Configuration archivoConfiguracion = ConfigurationManager .OpenExeConfiguration(ruta);

     

    Pero estoy revisando las firmas de mi metodo de cuando instancio un servicio y no hay nada donde yo le pueda indicar mi archivo .cofig a usar o algo asi…

     

    Sera que alguien me puede ayudar a encontrar una solucion o en caso de que lo que yo supongo que es no sea la respuesta…

    Mil gracias…

    • Editado AdyIr viernes, 10 de diciembre de 2010 19:20
    jueves, 9 de diciembre de 2010 20:08

Todas las respuestas

  • Hola, AdyIr!

     

    Una pregunta:

     

    ¿Los fragmentos de código que nos muestras los copiaste de tu aplicación?   Porque si es así veo raro es el hecho de que la variable que guarda el URI le llamas rutaServicio, pero utilizas otra llamada rutaServicioSucursales:

     

    string rutaServicio "http://" + txtDireccionServicio.Text + "/Servicio1.svc" ;

                ServiceClient MiServicio = new ServiceClient ("WSHttpBinding_IServicio1" , new EndpointAddress(rutaServicioSucursales));

     

    Bendiciones!


    Si la respuesta te es de utilidad, recuerda marcarla como Respuesta y/o votarla como Útil. Así colaboras a que el foro esté organizado.
    viernes, 10 de diciembre de 2010 14:28
  • Hola, AdyIr!

     

    Una pregunta:

     

    ¿Los fragmentos de código que nos muestras los copiaste de tu aplicación?   Porque si es así veo raro es el hecho de que la variable que guarda el URI le llamas rutaServicio, pero utilizas otra llamada rutaServicioSucursales:

     

     

    string  rutaServicio "http://"  + txtDireccionServicio.Text + "/Servicio1.svc"  ;

                 ServiceClient  MiServicio = new  ServiceClient  ("WSHttpBinding_IServicio1"  , new  EndpointAddress (rutaServicio ));

     

     

    Bendiciones!


    Si la respuesta te es de utilidad, recuerda marcarla como Respuesta y/o votarla como Útil. Así colaboras a que el foro esté organizado.

    Hola como estas... jeje bueno fue un error mio en tiempo de hacer la pregunta, es que por lo general cuando hago una pregunta cambio los nombres a los servicios o variables... Ya lo corregi...
    viernes, 10 de diciembre de 2010 19:18
  • Hola, AdyIr!

     

    Deberías revisar entonces el .app del host del servicio para ver si allí está definido el EndPoint. Y si allí está, entonces revisar si también está en el .app del cliente.  Si allí no está es porque falta agregar la referencia de servicio de este EndPoint.

     

    Bendiciones!


    Si la respuesta te es de utilidad, recuerda marcarla como Respuesta y/o votarla como Útil. Así colaboras a que el foro esté organizado.
    sábado, 11 de diciembre de 2010 12:28
  • Hola, AdyIr!

     

    Deberías revisar entonces el .app del host del servicio para ver si allí está definido el EndPoint. Y si allí está, entonces revisar si también está en el .app del cliente.  Si allí no está es porque falta agregar la referencia de servicio de este EndPoint.

     

    Bendiciones!


    Si la respuesta te es de utilidad, recuerda marcarla como Respuesta y/o votarla como Útil. Así colaboras a que el foro esté organizado.


    No... Este esta bien, como te digo puedo consumir mis servicios sin ningun problema el problema esta cuando instalo... Yo lo veo de esta forma, Al momento de iniciar una aplicacion esta atacha el app.config cierto? PEro en este caso cuando la aplicacion se inicio "Mi instalador" no atacho nada ya que sencillamente nisiquiera estaba creado el app.Config. Luego en la instalacion en lo agrega en la ruta seleccionada junto con todos los otros archivos, pero mi formulario que abri mediante la clase Instaler sencillamente esta en otro contexto ya que mi instalador se inicio desde Windows.System32 alli es que pienso que esta el problema pero no se como solucionarlo...

    Mil gracias por tu respuesta...

    lunes, 13 de diciembre de 2010 16:28