我有一个运行网站门户的客户端,该门户使用一些旧代码,这些旧代码会定期引起问题。该系统将工作几天甚至几周,然后工作进程将终止并且不再提供任何数据,您必须执行IISRESET才能使其再次工作
我发现了很多有关此错误的信息,在我看来,所有解决方案或解释都不适合我的代码。
这是导致我的错误的问题方法
许多解决方案都指出您不能重新使用连接来执行更新,但是此方法不能。我很确定它是显而易见的,它只是从数据库中获取数据,并且不执行任何更新。
除非我别无选择,否则我不想使用MARS。
寻找关于我可能错过的事情的指针
连接字符串
<add name="APP.Properties.Settings.DB" connectionString="server=trs-app;User Id=username;password=xxx;Persist Security Info=False;database=TRailS;Pooling=True" providerName="System.Data.SqlClient"/>
OpenConnection方法
//open connection to database
public bool OpenConnection()
{
try
{
if (DBConnection.State != ConnectionState.Open)
{
while (DBConnection.State == ConnectionState.Connecting)
{
// Do Nothing
}
DBConnection.Open();
System.Diagnostics.Debug.WriteLine("SQL Connection Opened");
}
return true;
}
catch (SqlException ex)
{
switch (ex.Number)
{
case 0:
LastError = "Cannot connect to server. Contact administrator";
return false;
case 1045:
LastError = "Invalid username/password, please try again";
return false;
}
LastError = "Unknown Error : " + ex.Message;
return false;
}
}
刚刚在DAL类中发现了这一点-这是原因!!!
private static SqlConnection DBConnection;
解决方案可能是从Sqlconnection变量(DBConnection)中删除静态对象,并根据建议在DAL类中实现IDisposable模式
protected virtual void Dispose(bool disposing)
{
if (disposing == true)
{
DBConnection.Close(); // call close here to close connection
}
}
~MSSQLConnector()
{
Dispose(false);
}
相关分类