none
Error al pasar parametros de una pagina a otra RRS feed

  • Pregunta

  • Buenos días comunidad necesito ayuda al pasar parámetros de una pagina a otra, el código que ocupo en la página que envía las variables es el siguiente :

    Response.Redirect("curriculum.aspx=dato1=" + txtusuario.Text + "dato2=" + txtcontraseña.Text

    y el código en donde la recibo es la siguiente:

     Dim usuario = Request.QueryString("dato1")
            Dim contraseña = Request.QueryString("dato2")

            Dim queryString As String = "SELECT id_usuario FROM usuarios WHERE usuario='" & usuario & "' and password='" & contraseña & "' "
            Using connection As New SqlConnection(connectionString)
                connection.Open()
                Dim command As New SqlCommand(queryString, connection)
                txtusuario2.Text = Convert.ToInt32(command.ExecuteScalar())
            End Using

    pero me aparece el siguiente error:

    No se encuentra el recurso.

    Descripción: HTTP 404. El recurso que está buscando (o una de sus dependencias) se puede haber quitado, haber cambiado de nombre o no estar disponible temporalmente. Revise la dirección URL siguiente y asegúrese de que está escrita correctamente. 

    Dirección URL solicitada: /sanasana2/curriculum.aspx=dato1=Guillermodato2=spindola94

     
    viernes, 9 de octubre de 2015 16:52

Respuestas

  • Si podrian ayudarme con esto

    Nadie podrá ayudarte si no das más datos. No podemos examinar tu ordenador por telepatía para ver qué es lo que te está pasando.

    Es IMPRESCINDIBLE que uses el debugger. Ejecuta el código paso a paso, examinando las variables y viendo cuál es la que llega sin el valor que tendría que llegar. Si ese valor tenía que llegar desde otro sitio (por ejemplo, si no llega el Session y se supone que lo habías metido en otra página), entonces repite la operación sobre ese otro sitio (la primera página) y vuelve a avanzar paso a paso con el debugger examinando cada línea y cada variable hasta encontrar el punto exacto en el que no sucede lo que esperabas que sucediese. Entonces, si no entiendes por qué está fallando, ponnos aquí el correspondiente fragmento de código, señala cuál es la variable que no tiene el valor adecuado, explícanos qué es lo que realmente tiene, y a partir de ahí podremos echarte una mano viendo qué puede estar fallando en esa parte del código.

    domingo, 11 de octubre de 2015 7:51

Todas las respuestas

  • Y si lo hago con sessiones, siempre me recupera 0 y no el valor de la base de datos
    viernes, 9 de octubre de 2015 17:11
  • hola

    estas equivocando la forma de definit los parametros en la url

    Response.Redirect(string.Format("curriculum.aspx?dato1={0}&dato2={1}", txtusuario.Text, txtcontraseña.Text));

    como veras se usa el "?" y el "&" para separar cada valor

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 9 de octubre de 2015 17:31
  • Leandro si ejecuto esto me devuelve 0

    Dim usuario = Request.QueryString("dato1")
            Dim contrasena = Request.QueryString("dato2")

            Dim queryString As String = "SELECT id_usuario FROM usuarios WHERE usuario='" & usuario & "' and password='" & contrasena & "' "
            Using connection As New SqlConnection(connectionString)
                connection.Open()
                Dim command As New SqlCommand(queryString, connection)
                txtusuario2.Text = Convert.ToInt32(command.ExecuteScalar)
            End Using

    y si ejecuto lo siguiente me devuelve -1

    Dim usuario = Request.QueryString("dato1")
            Dim contrasena = Request.QueryString("dato2")

            Dim queryString As String = "SELECT id_usuario FROM usuarios WHERE usuario='" & usuario & "' and password='" & contrasena & "' "
            Using connection As New SqlConnection(connectionString)
                connection.Open()
                Dim command As New SqlCommand(queryString, connection)
                txtusuario2.Text = Convert.ToInt32(command.ExecuteNonQuery)
            End Using

     sabes cual es la razon 

    viernes, 9 de octubre de 2015 17:49
  • No sé por qué falla, tiene que ser alguna tontería que deberías poder fácilmente identificar ejecutándolo paso a paso con el debugger y viendo qué valores llegan en las variables.

    Pero lo que sí te puedo decir es que es un auténtico disparate desde el punto de vista de la seguridad. Por una parte porque el usuario y la password viajan en claro en la Url y serán visibles (y manipulables) en la barra de navegación del navegador. Pero en segundo lugar, y esto es mucho más grave, porque es susceptible ante ataques de inyección de SQL. Para entrar, basta con teclear un nombre de usuario que sea "' OR 1=1 --", y esto devolverá el 1er ID que exista en la base de datos.

    viernes, 9 de octubre de 2015 18:17
  • hola

    si pones un breakpoint en el codigo puede evaluar que el Request.QueryString devuelve algun valor

    la correcta es la primera con el ExecuteScalar()

    pero deberias usar parametros

    Dim queryString As String = "SELECT id_usuario FROM usuarios WHERE usuario= @usuario and password= @contrasena"
    Using connection As New SqlConnection(connectionString)
    	connection.Open()
    	Dim command As New SqlCommand(queryString, connection)
    	command.Parameters.AddWithValue("@usuario", usuario)
    	command.Parameters.AddWithValue("@contrasena", contrasena)
    	
    	txtusuario2.Text = Convert.ToInt32(command.ExecuteScalar())
    	
    End Using

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 9 de octubre de 2015 18:58
  • pero esos parametros vienen de la otra pagina o de las sesiones
    viernes, 9 de octubre de 2015 19:41
  •  Dim usuario2 = Session("usuario2")
            Dim contraseña = Session("contraseña")

            Dim queryString As String = "SELECT id_usuario FROM usuarios WHERE usuario= @usuario2 and password= @contraseña"
            Using connection As New SqlConnection(connectionString)
                connection.Open()
                Dim command As New SqlCommand(queryString, connection)
                command.Parameters.AddWithValue("@usuario2", usuario2)
                command.Parameters.AddWithValue("@contraseña", contraseña)

                txtusuario2.Text = Convert.ToInt32(command.ExecuteScalar())

            End Using
    viernes, 9 de octubre de 2015 19:44
  • Hago esto :

    Dim usuario2 = Session("usuario2")
            Dim contraseña = Session("contraseña")

            Dim queryString As String = "SELECT id_usuario FROM usuarios WHERE usuario= @usuario2 and password= @contraseña"
            Using connection As New SqlConnection(connectionString)
                connection.Open()
                Dim command As New SqlCommand(queryString, connection)
                command.Parameters.AddWithValue("@usuario2", usuario2)
                command.Parameters.AddWithValue("@contraseña", contraseña)

                txtusuario2.Text = Convert.ToInt32(command.ExecuteScalar())

            End Using

    Y me manda lo siguiente:

    La consulta con parámetros '(@usuario2 nvarchar(4000),@contraseña nvarchar(4000))SELECT id_u' espera el parámetro @usuario2, que no se ha proporcionado.

    Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código. 

    Detalles de la excepción: System.Data.SqlClient.SqlException: La consulta con parámetros '(@usuario2 nvarchar(4000),@contraseña nvarchar(4000))SELECT id_u' espera el parámetro @usuario2, que no se ha proporcionado.

    Error de código fuente: 
    Línea 18:             command.Parameters.AddWithValue("@contraseña", contraseña)
    Línea 19: 
    Línea 20:             txtusuario2.Text = Convert.ToInt32(command.ExecuteScalar())
    Línea 21: 
    Línea 22:         End Using

    viernes, 9 de octubre de 2015 19:55
  • La consulta con parámetros '(@usuario2 [...] espera el parámetro @usuario2, que no se ha proporcionado.

    Bien, eso nos da una muy buena pista de por qué no funciona tanto la versión con parámetros como la que tenías al principio sin parámetros:

    Dado que sí que estás metiendo código para pasar el parámetro @usuario2, y a pesar de ello se queja de que no lo has proporcionado, significa que el valor de la variable usuario2 que le has metido al parámetro está vacío. Y teniendo en cuenta que ese valor lo sacas antes del Session, significa que el Session no trae ese valor.

    Esto lo podrías verificar fácilmente si hicieses uso del debugger como ya te hemos sugerido tanto Leandro como yo en dos mensajes anteriores. Pon un punto de ruptura al principio del código, y luego avanza paso a paso examinando los valores de las variables en cada paso verificando dónde no tienen el valor que deberían tener.

    sábado, 10 de octubre de 2015 7:20
  • Si podrian ayudarme con esto
    sábado, 10 de octubre de 2015 14:43
  • Si podrian ayudarme con esto

    Nadie podrá ayudarte si no das más datos. No podemos examinar tu ordenador por telepatía para ver qué es lo que te está pasando.

    Es IMPRESCINDIBLE que uses el debugger. Ejecuta el código paso a paso, examinando las variables y viendo cuál es la que llega sin el valor que tendría que llegar. Si ese valor tenía que llegar desde otro sitio (por ejemplo, si no llega el Session y se supone que lo habías metido en otra página), entonces repite la operación sobre ese otro sitio (la primera página) y vuelve a avanzar paso a paso con el debugger examinando cada línea y cada variable hasta encontrar el punto exacto en el que no sucede lo que esperabas que sucediese. Entonces, si no entiendes por qué está fallando, ponnos aquí el correspondiente fragmento de código, señala cuál es la variable que no tiene el valor adecuado, explícanos qué es lo que realmente tiene, y a partir de ahí podremos echarte una mano viendo qué puede estar fallando en esa parte del código.

    domingo, 11 de octubre de 2015 7:51