【发布时间】:2016-08-26 07:58:36
【问题描述】:
我将 MVC5 与经典的 ADO.NET 对象(例如 sqldatareader 和 sqldataadapter 以及 sqlconnection 等)一起使用...... 我的控制器在初始化时创建了一个连接,因为我需要将请求对象发送到持有 sqlconnection 的类以获取与问题无关的内容,因此我的控制器有一个覆盖 void
protected override void Initialize(RequestContext requestContext)
{
base.Initialize(requestContext);
db = new db(Request);
db.Connect();
}
其中 db 是我的类,方法 (connect) 将创建 sqlconnection 对象并打开一个连接...
为了关闭连接,我使用了控制器的 dispose 方法,如下所示
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
if (db != null)
{
db.Close();
db = null;
}
}
一切正常,然后有一次我收到一个奇怪的服务器错误(无法连接到数据库)请注意我的主机是 smarterasp.net
我可以使用我的家用计算机远程连接到数据库,我也可以连接到网络主机,所以问题出在我的网络主机和我的数据库主机之间,或者我的应用程序和我的数据库主机之间......
或者它可能与连接池有关,即使服务器错误没有给我任何细节或堆栈跟踪(母鸡错误不在我的应用程序线程中)......
我已经通过打开 smarterasp.net 控制面板的(远程 iis)选项卡并单击(修复 ACL)解决了这个问题,我不知道它做了什么,但它解决了我的问题....暂时:(不幸的是,此后问题再次出现多次
所以我的问题是简短的 在我初始化控制器时打开连接并在控制器处理时关闭它是一种好习惯吗???
你认为错误的原因是什么??
最后,如果问题不够清楚,我想道歉,因为英语不是我的第一语言(显然)......
非常感谢
【问题讨论】:
标签: ado.net database-connection asp.net-mvc-5