none
Trabajar con WCF en vez de WebService RRS feed

  • Pregunta

  • hola a todos!! estoy tratando de realizar un Servicio WCF o cambiar la codificacion por webservice a wcf... asi como se describe en este video realice el servicio asi:

    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class Operaciones : System.Web.Services.WebService {
    
        public Operaciones () {
    
            //Uncomment the following line if using designed components 
            //InitializeComponent(); 
        }
    
        [WebMethod]
        public bool IniciarSesion(Usuario objetoUsuario)
        {
            return AdministradorUsuarios.IniciarSesion(objetoUsuario);
        }
    
    [WebMethod]
        public void RegistrarUsuario(Ejercicio.Entidades.Usuario objetoUsuario)
        {
            AdministradorUsuarios.RegistrarUsuario(objetoUsuario);
        }
    REalice esta forma de invocar admnistradorusuarios.IniciarSesion  esta en la capa de regla de negocio... donde me trae un resultset... de usuario 

    Cree el servicio wcf asi

        [ServiceContract]
        public class ReservasService 
        {
    
    
            [OperationContract]
            public bool IniciarSesion(Usuario objUsuario)
            {
                return RegistrarUsuarios.IniciarSesion(objUsuario);
            }
    
            //[OperationContract]
            //public void RealizarReserva(Reserva objReserva)
            //{
            //    return RegistrarUsuarios.IniciarSesion(objUsuario);
            //}
        }
    lo invoque de esta forma dandole al metodo iniciarsesionAsycronico asi, eso me dice que debe estar en Asyncronico en true???

    codigo con wcf

            protected void btnIniciarSesion_Click(object sender, EventArgs e)
            {
                try
                {
                    Usuario objeto = new Usuario();
                    objeto.Nombre = this.txtUsuario.Text;
                    objeto.ClaveUsuario = this.txtPassword.Text;
                    try
                    {
                        servicio.IniciarSesionAsync(objeto);
                        Response.Redirect("ReservarHabitacion.aspx");
                    }
                    catch (Exception)
                    {
    
                        lblMensajes.Text = "usuario o clave invalidos";
                    }
                }
                catch (Exception ex)
                {
                    
                    lblMensajes.Text = "ha ocurrido un Error de Sesion ---" + ex;
                }
    
            }

    Como muestra el video se indica realizarlo asi:

    protected void btnInciarSesion_Click(object sender, EventArgs e)
        {
            try
            {
                Proxy.Operaciones servicio = new Proxy.Operaciones();
    
                Proxy.Usuario objeto = new Proxy.Usuario();
                objeto.Nombre = this.txtUsuario.Text;
                objeto.Clave = this.txtClave.Text;
                servicio.IniciarSesion(objeto);
                if (servicio.IniciarSesion(objeto) == true)
                {
                    Response.Redirect("Bienvenida.aspx");
                }
                else
                {
                    lblMensajes.Text = "Usuario o clave invalidos";
                }
            }
            catch (Exception excepcion)
            {
    
                lblMensajes.Text = "Ha ocurrido un Error iniciando Sesion";//+excepcion
            }
        }
    Agradeceria que alguien me guiara en que estoy fallando si debo o puedo IniciarSesionAsync... pero no me permite llamar o La propiedad IniciarSesion me sale error que no toma ninguna sobrecarga sobre este.



    • Editado greg_dorian jueves, 23 de octubre de 2014 22:47
    jueves, 23 de octubre de 2014 22:45

Todas las respuestas

  • hola

    algo que noto es que no defines ninguna interface para definir el servicio donde esta el IReservasService que define el contrato del servicio

    despues para invocar de forma asincona es por medio del proxy que lo logras, pero ojo allo lo quieres usar en un ambiente web, y no te va a funcionar

    si en el evento web llamas a un metodo asincrono del servicio el codigo continuara y realizara el redirect, con lo cual no tendria sentido

    How to: Call WCF Service Operations Asynchronously

    la creacion del proxy es donde indicas si realizas llamadas asincronas

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 24 de octubre de 2014 2:27