none
Retornar mensaje Web Method RRS feed

  • Pregunta

  • Estimados

            Deseo realizar un metodo Web que me retorne un mensaje al realizar el llamado al Web Service desde mi aplicacion de escritorio, en parte tengo ya mi metodo para realizar las funciones necesarias pero me gustaria que me devolviera un mensaje. Es posible realizarlo, me guiaron a utilizar Json pero no me manejo mucho. Espero que puedan ayudarme.

    [WebMethod]
            public void Registro(int id,int codTecnico, string codScan, string fechaIngreso, string horaIngreso, string fechaSalida, string horaSalida, string status)
            {
                string myConnString= "datasource = localhost; port = 3306; username = root1; password = MySqlServer";
                MySqlConnection myConn = new MySqlConnection(myConnString);
                string sql= "INSERT INTO `cdcontrolst`.`cdcmaintenaince`(`tecDNI`,`scanID`,`dateEntry`,`timeEntry`,`dateDeparture`,`timeDeparture`,`statusRegister`)VALUES('" + codTecnico+"','"+codScan+"','"+fechaIngreso+"','"+horaIngreso+"','"+fechaSalida+"','"+horaSalida+"','"+status+"');";
                try
                {
                    myConn.Open();
                    MySqlCommand cmd = new MySqlCommand(sql, myConn);
                    cmd.ExecuteNonQuery();
                    myConn.Close();
                    
                    /*
                     * Mensaje de enviado
                     */
                }
                catch(Exception ex)
                {
                    
                }
            }

    martes, 5 de septiembre de 2017 14:22

Respuestas

  • hola

    pero el codigo que muestras define un void como respuesta, o sea no retorna nada

    si quieres que devuelva algo debes cambiarlo

    defina una clase para enviar datos

    public class RegistroDto
    {
    	public int id {get;set;}
    	public int codTecnico {get;set;}
    	public int codScan {get;set;}
    	//resto valores
    }
    

    tienes que usar parametros no se concatena en el string

    [WebMethod]
    public string Registro(RegistroDto registro)
    {
    	string myConnString= "datasource = localhost; port = 3306; username = root1; password = MySqlServer";
    	 myConn = new MySqlConnection(myConnString);
    	
    	using (MySqlConnection conn = new MySqlConnection("connection string")) 
    	{ 
    		string sql= @"INSERT INTO cdcontrolst.cdcmaintenaince(tecDNI,scanID,dateEntry,..) VALUES ( ?codTecnico, ?codScan,...);
    					SELECT LAST_INSERT_ID();";
    		MySqlCommand cmd = new MySqlCommand(sql, conn); 
    		
    		cmd.Parameters.AddWithValue("?codTecnico", registro.codTecnico); 
    		cmd.Parameters.AddWithValue("?codScan", registro.codScan); 
    		//resto datos
    		
    		return Convert.ToString(cmd.ExecuteScalar()); 
    	}
    
    }


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 5 de septiembre de 2017 17:29
  • hola

    >>En si funciona pero no se si es correcto realizar dicha linea de codigo

    es correcto, por lo que veo realizaste una web reference al servicio para que se genere el proxy

    pero recomendaria que si son muchos los parametros definas una clase como la que use en el ejemplo con RegistroDto

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 6 de septiembre de 2017 14:22

Todas las respuestas

  • hola

    pero el codigo que muestras define un void como respuesta, o sea no retorna nada

    si quieres que devuelva algo debes cambiarlo

    defina una clase para enviar datos

    public class RegistroDto
    {
    	public int id {get;set;}
    	public int codTecnico {get;set;}
    	public int codScan {get;set;}
    	//resto valores
    }
    

    tienes que usar parametros no se concatena en el string

    [WebMethod]
    public string Registro(RegistroDto registro)
    {
    	string myConnString= "datasource = localhost; port = 3306; username = root1; password = MySqlServer";
    	 myConn = new MySqlConnection(myConnString);
    	
    	using (MySqlConnection conn = new MySqlConnection("connection string")) 
    	{ 
    		string sql= @"INSERT INTO cdcontrolst.cdcmaintenaince(tecDNI,scanID,dateEntry,..) VALUES ( ?codTecnico, ?codScan,...);
    					SELECT LAST_INSERT_ID();";
    		MySqlCommand cmd = new MySqlCommand(sql, conn); 
    		
    		cmd.Parameters.AddWithValue("?codTecnico", registro.codTecnico); 
    		cmd.Parameters.AddWithValue("?codScan", registro.codScan); 
    		//resto datos
    		
    		return Convert.ToString(cmd.ExecuteScalar()); 
    	}
    
    }


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 5 de septiembre de 2017 17:29
  • Gracias por la respuesta Leandro, como es posible obtener la respuesta del web service desde la aplicacion de escritorio C# que realice este codigo

    WSAuth.MySqlDBSoapClient WSClient = new WSAuth.MySqlDBSoapClient();
                            string test=WSClient.Registro(id, codtecnico, codscan, fechaingreso, horaingreso, fechasalida, horasalida, statusregister);

    En si funciona pero no se si es correcto realizar dicha linea de codigo

    miércoles, 6 de septiembre de 2017 11:59
  • hola

    >>En si funciona pero no se si es correcto realizar dicha linea de codigo

    es correcto, por lo que veo realizaste una web reference al servicio para que se genere el proxy

    pero recomendaria que si son muchos los parametros definas una clase como la que use en el ejemplo con RegistroDto

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 6 de septiembre de 2017 14:22