[英]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.