none
Publicar mi Proyecto n Capas RRS feed

  • Pregunta

  • Buenas estimados, tengo un problema con respecto a mi proyecto.
    Tengo un proyecto realizado en 4 capas en asp.net, he publicado el proyecto (click derecho publicar) pero solo en el proyecto Presentacion(los otros proyectos dato, entidad, negocio) no los he publicado porque leí un articulo el cual decía que estos ya se generaban automaticamente y se incluían, pero al parecer no porque cuando quiero hacer el login en mi servidor iis me sale lo siguiente:

    [NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.] CapaDato.DatoUsuario.Acceso(EntidadUsuario EUsuario) +92 CapaPresentacion.Acceso.VerificarUsuario() +112 System.Web.UI.WebControls.Button.OnClick(EventArgs e) +11762652 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +149 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +6015

    Me gustaria saber como hago para publicar de manera correecta el proyecto total y así funcione en mi iis.

    Saludos.


    Del Castillo Victor Andres - Lima Peru

    jueves, 18 de mayo de 2017 22:03

Respuestas

  • hola

    >>La verdad nunca lo he validado

    y si lo validas ? podrias poner algun log para ver que valor esta tomando

    >>mi consulta esta en el datatable del cual hago el return, eso en realidad no funciona o me equivoco?

    ese no devuelve null, porque lo estas instanciando, a lo sumo no devolvera rows


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta VikDelCastillo viernes, 19 de mayo de 2017 16:29
    viernes, 19 de mayo de 2017 15:53

Todas las respuestas

  • Si se encuentran los 4 DLL de las 4 capas.

    Dato, Entidad, Negocio y Presentacion


    Del Castillo Victor Andres - Lima Peru

    jueves, 18 de mayo de 2017 22:22
  • Hola VikDelCastillo

    Lo que está sucediendo es que los datos que traes de ese usuario uno viene como nulo, entonces al parecer en tu codificación no lo estas controlando. Realiza un select a la base de datos de ese usuario que intentas hacer login y verás que uno de sus datos es null. 

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    jueves, 18 de mayo de 2017 22:51
  • Estimado este es el codigo que tengo en ese botón:
    EUsuario.usuario = TextBox1.Text;
                EUsuario.clave = TextBox2.Text;
                DataTable tbl = NUsuario.Acceso(EUsuario);

                if (tbl.Rows.Count == 0)
                {
                    //Response.Write("<script>alert('Usuario o Clave no son correctos'); </script>");
                    Label1.Visible = true;
                    Label1.Text = " Usuario o Clave erróneo ";
                    TextBox1.Text = "";
                    TextBox2.Text = "";
                }
                else
                {
                    Session["usuario"] = tbl.Rows[0][0].ToString();
                    //string rol = tbl.Rows[0][1].ToString();
                    //string nivel = tbl.Rows[0][1].ToString();
                    Response.Redirect("~/Listado.aspx");
                }
            }

    En el cual mando un usuario y clave, entonces me dirigo a la capa datos y aca esta mi codigo, el id siempre esta lleno, no existe null, ya que ha sido testeado anteriorment de manera local, es decir que de manera local con una bd local me ha funcioando de manera ok, de igual manera revisaré nuevamente la bd, gracias.

           public DataTable Acceso(EntidadUsuario EUsuario)
            {
                string conex = ConfigurationManager.ConnectionStrings["CadenaConexion"].ToString();
                SqlConnection cnn = new SqlConnection(conex);

                //SqlCommand cmd = new SqlCommand("select id from usuario where usuario=@usuario and clave=@clave", cnn);
                SqlCommand cmd = new SqlCommand("select indice from usuario where usuario=@usuario and clave=@clave", cnn);
                cmd.Parameters.AddWithValue("@usuario", EUsuario.usuario);
                cmd.Parameters.AddWithValue("@clave", EUsuario.clave);
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataTable tbl = new DataTable();
                da.Fill(tbl);
                return tbl;
            }

    Quiero resaltar que el proyecto me funciona de manera ok en el local, en el iis es donde presenta este error.


    Del Castillo Victor Andres - Lima Peru

    jueves, 18 de mayo de 2017 23:03
  • hola

    >>pero al parecer no porque cuando quiero hacer el login en mi servidor iis me sale lo siguiente:

    Ese mensaje no tiene nada que ver con la publicacion

    Si en el \bin puedes ver las dll con los nombres de los proyectos de las otras capas, entonces estan publicados

    Este mensaje se relacion con la instancia de alguna clase, quizas un problema de datos o alguna validacion que te este faltando

    es mas veras que el problema se presenta en CapaDato.DatoUsuario.Acceso() con lo cual esa capa de datos esta publicada, deberias ver en ese codigo que objeto podria quedar en null, quizas si el usuairo no existe devuelves un null como respuesta el cual no validas

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 18 de mayo de 2017 23:15
  • donde instancias EUsuario ? tampoco veo la instancia de NUsuario

    valida que tengas el "new" de estas clases

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 18 de mayo de 2017 23:17
  • he buscado por todos lados y bueno el problema dice que es el null que ustedes me comentan, buscaré para ver donde puede quedar null, sino en todo caso volveré a consultar, gracias y saludos.

    Del Castillo Victor Andres - Lima Peru

    jueves, 18 de mayo de 2017 23:20
  • En efecto, te está falta instanciar la entidad usuario al momento de recuperar los datos

    EntidadUsuario EUsuario = new EntidadUsuario();

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    jueves, 18 de mayo de 2017 23:20
  • Estaba fuera del botoón la instancia de la clase pero a pesar que lo he colocado en el botón el error persiste.

     protected void Button1_Click(object sender, EventArgs e)
            {
                EntidadUsuario EUsuario = new EntidadUsuario();
                NegocioUsuario NUsuario = new NegocioUsuario();
                EUsuario.usuario = TextBox1.Text;
                EUsuario.clave = TextBox2.Text;
                DataTable tbl = NUsuario.Acceso(EUsuario);

                if (tbl.Rows.Count == 0)
                {
                    //Response.Write("<script>alert('Usuario o Clave no son correctos'); </script>");
                    Label1.Visible = true;
                    Label1.Text = " Usuario o Clave erróneo ";
                    TextBox1.Text = "";
                    TextBox2.Text = "";
                }
                else
                {
                    Session["usuario"] = tbl.Rows[0][0].ToString();
                    //string rol = tbl.Rows[0][1].ToString();
                    //string nivel = tbl.Rows[0][1].ToString();
                    Response.Redirect("~/Listado.aspx");
                }
            }


    Del Castillo Victor Andres - Lima Peru

    viernes, 19 de mayo de 2017 13:49
  • en mi capa datos tengo lo siguiente:

     public DataTable Acceso(EntidadUsuario EUsuario)
            {
                string conex = ConfigurationManager.ConnectionStrings["CadenaConexion"].ToString();
                SqlConnection cnn = new SqlConnection(conex);

                //SqlCommand cmd = new SqlCommand("select id from usuario where usuario=@usuario and clave=@clave", cnn);
                SqlCommand cmd = new SqlCommand("select indice from usuario where usuario=@usuario and clave=@clave", cnn);
                cmd.Parameters.AddWithValue("@usuario", EUsuario.usuario);
                cmd.Parameters.AddWithValue("@clave", EUsuario.clave);
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataTable tbl = new DataTable();
                da.Fill(tbl);
                return tbl;
            }

    La verdad no veo problema alguno.


    Del Castillo Victor Andres - Lima Peru

    viernes, 19 de mayo de 2017 13:55
  • validaste que tengas la key en el configuracion

    ConfigurationManager.ConnectionStrings["CadenaConexion"]

    porque sino la encuantra devolvera null


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 19 de mayo de 2017 14:56
  • La "CadenaConexion" viene de mi web.config en el connectionString 
     <add name="CadenaConexion" .......... >
    La verdad nunca lo he validado, de manera local me conecta y me trabaja ok, al subirlo al servidor iis coloqué mi webconfig que me trabajan otros proyectos normalmente en el iis.

    Tema aparte he visto que acá podría ser el error, no tengo claro esto:
     Este es mi capadato dentro de esta capa tengo una clase datousuario.cs
    mi consulta esta en el datatable del cual hago el return, eso en realidad no funciona o me equivoco? quizás eso podría ser el null tema aparte como cambio eso por otro return? podría ser return true? , agradezco su ayuda, saludos
    public class DatoUsuario
        {
            public DataTable Acceso(EntidadUsuario EUsuario)
            {
                string conex = ConfigurationManager.ConnectionStrings["CadenaConexion"].ToString();
                SqlConnection cnn = new SqlConnection(conex);

                //SqlCommand cmd = new SqlCommand("select id from usuario where usuario=@usuario and clave=@clave", cnn);
                SqlCommand cmd = new SqlCommand("select indice from usuario where usuario=@usuario and clave=@clave", cnn);
                cmd.Parameters.AddWithValue("@usuario", EUsuario.usuario);
                cmd.Parameters.AddWithValue("@clave", EUsuario.clave);
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataTable tbl = new DataTable();
                da.Fill(tbl);
                return tbl;
            }
        }

    Del Castillo Victor Andres - Lima Peru


    viernes, 19 de mayo de 2017 15:09
  • hola

    >>La verdad nunca lo he validado

    y si lo validas ? podrias poner algun log para ver que valor esta tomando

    >>mi consulta esta en el datatable del cual hago el return, eso en realidad no funciona o me equivoco?

    ese no devuelve null, porque lo estas instanciando, a lo sumo no devolvera rows


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta VikDelCastillo viernes, 19 de mayo de 2017 16:29
    viernes, 19 de mayo de 2017 15:53
  • ok validaré la conexion gracias, si hay un manual para validar mucho mejor, Saludos.

    Del Castillo Victor Andres - Lima Peru


    viernes, 19 de mayo de 2017 16:02
  • Validé y efectivamente devolvía null, problema solucionado gracias.

    Del Castillo Victor Andres - Lima Peru

    viernes, 19 de mayo de 2017 16:30