示例#1
0
        /// <summary>
        /// Inserta en la base de datos un error a nivel base de datos
        /// </summary>
        /// <param name="MessageErr">Mensaje de error</param>
        /// <param name="st">El trace</param>
        /// <param name="user">Usuario en caso de haberlo</param>
        /// <param name="sApp">El ID de la aplicacion</param>
        public void insErrorDB(string MessageErr, StackTrace st, string user, string sApp)
        {
            try
            {
                if (MessageErr.Length > 445)
                {
                    MessageErr = MessageErr.Substring(0, 445);
                }
                //Obtiene el hostname
                String      strHostname = Dns.GetHostName();
                IPHostEntry myself      = Dns.GetHostEntry(strHostname);

                ////Obtiene la Ip del usuario que genero el error
                System.Net.IPAddress ip = myself.AddressList.Where(n => n.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).First();
                string sIp = ip.ToString();

                StringBuilder strStackTrace = new StringBuilder();
                foreach (StackFrame f in st.GetFrames())
                {
                    strStackTrace.Append(f.ToString());
                    break;
                }

                //if (MessageErr.Length > 490) MessageErr = MessageErr.Substring(0, 448);

                if (strStackTrace.Length > 490)// Validamos la longitud del stack
                {
                    string sStackTrace = strStackTrace.ToString();
                    strStackTrace.Clear();
                    strStackTrace.Append(sStackTrace.Substring(0, 490));
                }

                if (sIp.Length > 39)
                {
                    sIp = sIp.Substring(0, 39);
                }
                if (strHostname.Length > 148)
                {
                    strHostname = strHostname.Substring(0, 148);
                }

                //Inserta en la tabla del log de errores
                linqIELDataBaseDataContext dboSegLatino = new linqIELDataBaseDataContext();
                dboSegLatino.sp_insLogError(Int64.Parse(sApp), MessageErr, strHostname, sIp, strStackTrace.ToString(), DateTime.Now, user);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }