StackOverflowException sqlConnection.Open()仅在发布时

时间:2016-01-20 17:53:24

标签: c# asp.net stack-overflow sqlconnection

我做了一个网络项目,在所有预览代码编译(F5)我能够测试并继续使用我的程序和代码,在我完成之后...我需要发布我的网络应用程序,你有4个主要类,商务,数据,实体和视觉,在此我编译我的整个proyect,并尝试发布它,我已经将我的应用程序连接到数据库和APP服务器,因为我的连接字符串已经定义为在测试模式下访问该服务器它没有问题,在我发布我的proyect之后的问题是在SqlConnection.Open()得到了一个StackOverflowException但只是通过发布它,有人可以帮我弄清楚它为什么会发生这个吗?

这是我的代码,例外: Error Capture Debug

 //Funcion Conectar

public SqlConnection conectar()
        {
            SqlConnecti

on cn = new SqlConnection();
            //cn.ConnectionString = @"Data Source=LAP\YRG_LOCAL; Initial Catalog= SAP3Test; Integrated Security=true";
            //cn.ConnectionString = @"Data Source=SERVER\SQLSERVER2008; Initial Catalog= SAP3Test; Integrated Security=true";
            //Cn.ConnectionString = @"Data Source=MEXMAC176AP12\SQLSERVER2008; Initial Catalog= SAP3Test; user=sa password=E1nste1n01 Integrated Security=true";
            cn.ConnectionString = @"Data Source=SERVER\YRGSQL2008R2; Initial Catalog= SAP3; Integrated Security=true; ";
            return cn;
        }

//Función para crear registro en Bitácora con sobrecarga
        public static int CrearBitacora(String Sys, String pagWeb, int RESULTADO, String display) //sobrecarga cuando no se puede enviar objeto tipo entUsuario
        {
            //Declaración de objetos que se usaran, Res como , SQLCMD y un DATAREADER
            //entUsuario obj = null;
            SqlCommand cmd = null;
            SqlDataReader dr = null;
            int RES = 0;
            try
            {
                Conexion cn = new Conexion(); // Variable de conexión para BD
                SqlConnection cnx = cn.conectar();
                cmd = new SqlCommand("CrearBitacora", cnx);
                cmd.Parameters.AddWithValue("@idUsuario", "System");
                cmd.Parameters.AddWithValue("@paginaWeb", pagWeb);
                cmd.Parameters.AddWithValue("@tipoAccion", RESULTADO);//Se obtendrá de BD como parte del resultado
                cmd.Parameters.AddWithValue("@Mensaje", display);//Mensaje que se mostró al Usuario
                cmd.CommandType = CommandType.StoredProcedure;
                //se ejecuta el SP
                if (cnx != null && cnx.State == ConnectionState.Closed)
                {
                    cnx.Open();
                    dr = cmd.ExecuteReader();
                    dr.Read();
                    //se obtiene respuesta si se creo o no el registro en Bitácora
                    RES = Convert.ToInt32(dr["RES"]);
                }
                cmd.Connection.Close();
            }
            catch (Exception ex)
            {
                String mesg;
                int Reg = 0;
                mesg = ex.ToString();
                RES = 4; //Asigna 4 a Res en caso de algún error durante la operación
                //Insertar Registro en Bitácora
                String MsgFinal = "Error de Sistema Mensaje de Error: " + mesg;
                Reg = CrearBitacora("System", pagWeb, RES, MsgFinal);
                //FIN Insertar Registro en Bitácora
            }
            finally
            {
                if (cmd != null && cmd.Connection.State != ConnectionState.Closed)
                {
                    cmd.Connection.Close(); //Cerrar conexión de datos
                }
                else
                {
                    cmd.Connection.Close(); //Cerrar conexión de datos
                }
            }
            return RES;
        } 
    }

感谢所有人。

3 个答案:

答案 0 :(得分:2)

您正在捕获异常并调用相同的方法。

 catch (Exception ex)
        {
            String mesg;
            int Reg = 0;
            mesg = ex.ToString();
            RES = 4; //Asigna 4 a Res en caso de algún error durante la operación
            //Insertar Registro en Bitácora
            String MsgFinal = "Error de Sistema Mensaje de Error: " + mesg;
            Reg = CrearBitacora("System", pagWeb, RES, MsgFinal); // <---- This line!!!
            //FIN Insertar Registro en Bitácora
        }

答案 1 :(得分:0)

您的代码正在尝试进入交互模式。这在测试中有效,但它不会在生产Web服务器中。使用函数显示消息(Jquery或Java)

答案 2 :(得分:0)

public static class MessageBox
{
public static void ShowMessage(string MessageText, Page MyPage)
    {     
            MyPage.ClientScript.RegisterStartupScript(MyPage.GetType(),
            "MessageBox", "alert('" + MessageText.Replace("'", "\'") + "');", true);
    }
}