Asp.Net(2)
& & & & 最近在业务系统中写了个下载文件的接口,供公司的其他工具下载业务系统中的文件。结果在下载文件时发现,文件下载了一部分就无法再下载。系统提示“与服务器的连接被重置” 。有时候甚至不会提示 ,IE的保存进度框会突然消失不见。
& & & & 一开始以为是C#.NET或者IIS的问题。因为在本机VS2010里调试时没有任何问题,文件能顺利下载。
& & & &因为在服务器上打开IE下载也不行,所以可以排除网络和防火墙问题。
& & & &求助度娘和谷哥了大半天,没有找到任何能解决我问题的方法。
& & & &自己在业务系统中写的调试日志也没起什么作用,出问题的代码位置似乎有些随机性。
& & & &后来看了服务器的系统日志,发现了以下错误:
发生未处理的异常,并已终止进程。
Application ID: /LM/W3SVC/6/ROOT
Process ID: 316
Exception: System.InvalidOperationException
Message: 内部 .Net Framework 数据提供程序错误 1。
StackTrace:
在 System.Data.ProviderBase.DbConnectionInternal.PrePush(Object expectedOwner)
在 System.Data.ProviderBase.DbConnectionPool.PutObject(DbConnectionInternal obj, Object owningObject)
在 System.Data.ProviderBase.DbConnectionInternal.CloseConnection(DbConnection owningObject, DbConnectionFactory connectionFactory)
在 System.Data.SqlClient.SqlInternalConnection.CloseConnection(DbConnection owningObject, DbConnectionFactory connectionFactory)
在 System.Data.SqlClient.SqlConnection.Close()
在 System.Data.SqlClient.SqlConnection.Dispose(Boolean disposing)
在 ponent.Dispose()
在 BLL.DataConnection.Finalize()
& & & & 然后又通过屏蔽不同位置的代码,终于定位到了错误:
ProcedureBLL b = new ProcedureBLL(new DataConnection());
//其他代码……& & & &&正确写法应该为:
using (DataConnection c = new DataConnection())
ProcedureBLL b = new ProcedureBLL(c);
//其他代码……
& & & &&这次的问题是由于数据库连接未及时被释放引起的。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:10582次
排名:千里之外
原创:10篇
(1)(2)(1)(3)(1)(2)(1)