none
ASP.NET NO EJECUTA RUTINA/PROCEDIMIENTO DE CLASE DE NEGOCIO RRS feed

  • Pregunta

  • Hola a todos tengo una aplicacion asp.net que en mi equipo de desarrollo que tiene Windows 7 Pro con VS 2012 Pro funciona super bien, tengo una boton que lo que hace es validar que una persona no exista en la BD. Al copiar la aplicación al equipo de mi cliente que tiene Windows Server 2012  y VS Express Web no llama a la rutina que debería llamar el evento click del webform:

    He aqui mas o menos:

            protected void btnValidar_Click(object sender, ImageClickEventArgs e)
            {
                try
                {
                    if (fulAfiliados.HasFile)
                    {
                        if (!this.Page.ClientScript.IsClientScriptBlockRegistered("InicializarControles"))
                        {
                            string strScript = "$(document).ready(function(){";
                            strScript = string.Format("{0} seleccionarTab('contenido','2');", strScript);
                            strScript = string.Format("{0}}});", strScript);
                            this.Page.ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "InicializarControles", strScript, true);
                        }
                        btnGuardarMasivo.Visible = false;
                        List<afiliadoItem> tmpAfiliados = new List<afiliadoItem>();
                        ClienteBusiness oCBiz = new ClienteBusiness(cadenaConexion);
                        string error1 = oCBiz.ValidarAfiliadosArchivo(fulAfiliados.PostedFile.InputStream, tmpAfiliados, oUsuarioI.IdEmpresa, char.Parse(ddlDelimitador.SelectedValue));
                        Response.Write("<script>alert('" + error1 + "');</script>");
                        if (error1 != "")
                        {
                            Response.Write("<script>alert('" + error1 + "');</script>");
                            dgAfRepetidos.DataSource = tmpAfiliados;
                            dgAfRepetidos.DataBind();
                        }
                    }
                    else
                    {
                        Response.Write("<script>alert('No hay un archivo seleccionado');</script>");
                    }
                }
                catch (Exception ex)
                {
                    Response.Write("<script>alert('Error al querer cargar el archivo " + ex.ToString() + "');</script>");
                }

    Este evento debe llamar al siguiente procedimiento:

                                    

            public string ValidarAfiliadosArchivo(Stream fileStream, List<afiliadoItem> tmpAfiliados, long idEmpresa, char Delimitador)
            {
                try
                {
                    string Error = "";
                    using (StreamReader sr = new StreamReader(fileStream, Encoding.UTF7))
                    {
                        string linea = null;
                        bool PrimeraLinea = true;
                        bool blnError = false;
                        int IdLinea = 2;
                        while (((linea = sr.ReadLine()) != null) && !blnError)
                        {
                            if (PrimeraLinea)
                            {
                                if (linea.Split(Delimitador).Length < 19)
                                {
                                    Error = "El numero de columnas del archivo no es valido..."; 
                                    blnError = true;
                                }
                                PrimeraLinea = false;
                            }
                            else
                            {
                                if (linea.Split(Delimitador)[PlantillaColumnasEnum.TipoIdentificacion.GetHashCode()] != "" && linea.Split(Delimitador)[PlantillaColumnasEnum.PrimerNombre.GetHashCode()] != "")
                                {

                                    //verificar si existe el afiliado

                                    AfiliadoBusiness afiliado1 = new AfiliadoBusiness(cadenaConexion);
                                    string lcIdentificacion = (linea.Split(Delimitador)[PlantillaColumnasEnum.Identificacion.GetHashCode()]);
                                    afiliadoItem oItem =  afiliado1.ObtenerAfiliadoPorIdentificacion1(lcIdentificacion);
                                    System.Diagnostics.Debug.WriteLine(oItem.Identificacion);
                                    if (!string.IsNullOrEmpty(oItem.Identificacion))
                                    {
                                        Error = Error+"El afiliado "+oItem.Identificacion+" - "+oItem.PrimerNombre+" - "+oItem.SegundoApellido+" Ya existe en la base de datos en la empresa "+oItem.Cliente;
                                        tmpAfiliados.Add(oItem);
                                    }
                                    IdLinea++;
                                }
                                else
                                {
                                    blnError = true;
                                }
                            }
                        }
                    }
                    return Error;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }

    PERO NO LO HACE. NOTEN QUE HE PUESTO LA SIGUIENTE LINEA PARA HACER UN SEGUIMIENTO PERO NADA:

    System.Diagnostics.Debug.WriteLine(oItem.Identificacion);

    Gracias por su colaboracion:


    Tito Alomia V. Cel. 317 309 08 12

    miércoles, 27 de enero de 2016 20:24

Todas las respuestas

  • hola

    El Debug.WriteLine() no va a hacer nada si has realizado el deploy de la aplicacion en un servidor, esta solo aplcia si ejecutas desde el VS

    En el codigo veo que defines if (fulAfiliados.HasFile), entonces me pregunto, le estara llegando el archivo ? porque sino ingresa en ese if el resto no se ejecuta

    Lo que si recomendaria es que no uses el Response.Write() para mostrar mensajes, debes usar el ScriptManager.RegisterClientScript()

    para ver por donde pasa deberias poner una codigo que loguee a un archivo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 27 de enero de 2016 20:43
  • Hola Leandro si efectivamente agregue esta linea Response.Write(fulAfiliados.HasFile);  y me devuelve true,

    en mi clase de regla de negocio como hago para hacer el debug de una variable o desplegarla en pantalla hago esto pero no funciona

    /verificar si existe el afiliado


                                    AfiliadoBusiness afiliado1 = new AfiliadoBusiness(cadenaConexion);
                                    string lcIdentificacion = (linea.Split(Delimitador) [PlantillaColumnasEnum.Identificacion.GetHashCode()]);
                                    afiliadoItem oItem =  afiliado1.ObtenerAfiliadoPorIdentificacion1(lcIdentificacion);
                                    if (!string.IsNullOrEmpty(oItem.Identificacion))
                                    {
                                        Error = Error+"El afiliado "+oItem.Identificacion+" - "+oItem.PrimerNombre+" - "+oItem.SegundoApellido+" Ya existe en la base de datos en la empresa "+oItem.Cliente;

                                        tmpAfiliados.Add(oItem);
                                    }

                                    string mensaje = string.Format("alert('{0}')", Error);

      Console.Write(Error);


    Tito Alomia V. Cel. 317 309 08 12

    jueves, 28 de enero de 2016 13:46
  • en mi clase de regla de negocio como hago para hacer el debug de una variable o desplegarla en pantalla

    podrias loguear a un archivo de texto la informacion que quieres validar

    Cómo escribir facilmente un fichero Log en .NET Framework

    o sea en lugar de mostrarlo lo logueas a un archivo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 28 de enero de 2016 15:48
  • Hola Leandro creé unos puntos de interrupción en el equipo servidor "Windows server 2012" y salen alguna excepciones:

    Primera excepción del tipo 'System.UnauthorizedAccessException' en mscorlib.dll
    Primera excepción del tipo 'System.Globalization.CultureNotFoundException' en mscorlib.dll
    Primera excepción del tipo 'System.IO.FileNotFoundException' en mscorlib.dll

    Primera excepción del tipo 'System.Threading.ThreadAbortException' en mscorlib.dll
    Primera excepción del tipo 'System.Threading.ThreadAbortException' en Avanti Software.dll
    Primera excepción del tipo 'System.Threading.ThreadAbortException' en mscorlib.dll
    Primera excepción del tipo 'System.Threading.ThreadAbortException' en Avanti Software.dll

    Que puede ser esto?

    Gracias.


    Tito Alomia V. Cel. 317 309 08 12

    jueves, 28 de enero de 2016 16:11
  • >>creé unos puntos de interrupción en el equipo servidor "Windows server 2012"

    como lograste poner interrupciones en un sitio donde haces el deploy? estas usando Remote Debugger

    >>Que puede ser esto?

    esta claro que son exception, podria ser el causante del problema, lo que no sabria decirte es que lo podra estar generando

    Alli se nota un acceso no autorizado, aunque junto a un FileNotFound, lo cual es raro si deniega el acceso como puede ser que no encuentre el archivo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 28 de enero de 2016 17:00
  • Bueno en el equipo servidor esta instalado en VS Express Web, desde ali corro la aplicación web en modo Debug.. con los punto de interripcion. Si es muy raro porque almaceno en una variable el nombre del archivo y aparece como nul, el archivo se selecciona mediante un control web FileUpload

    string lcFile = fulAfiliados.PostedFile.FileName;


    Tito Alomia V. Cel. 317 309 08 12

    jueves, 28 de enero de 2016 18:00