簡體   English   中英

StackOverflowException sqlConnection.Open()僅在發布時

[英]StackOverflowException sqlConnection.Open() at publish only

我做了一個網絡項目,完成所有預覽代碼(F5)后,我仍然無法進行測試並繼續使用我的程序和代碼...完成后,我需要發布我的網絡應用程序,您有4個主類, Bussines,Data,Entity和Visual,在此之后,我編譯了整個proyect,並嘗試將其發布,我已經將我的應用程序連接到DB和APP服務器,因為已經將我的Connection String定義為在測試模式下訪問該服務器,並且可以正常工作沒問題,問題出在我發布對象后,在SqlConnection.Open()上得到了StackOverflowException,但只有通過發布它,有人才能幫助我弄清楚為什么會這樣嗎?

這是我的代碼,但有一個例外: 錯誤捕獲調試

 //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;
        } 
    }

謝謝大家。

您正在捕獲異常並調用相同的方法。

 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
        }

您的代碼正在嘗試進入交互模式。 這可以在測試中工作,但不能在生產Web服務器中使用。 使用功能來顯示您的消息(jQuery或Java)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM