2017-05-07 51 views
0

在经典的asp中我有文件open.aspclose.asp包括在每个页面的顶部和底部。某处我在我的代码中有response.end。我是否需要在response.end之前关闭连接,或者在response.end之后服务器是否将页面翻译为页面末尾? open.asp的我需要在response.end之前关闭连接吗?

内容:

Set objcon = Server.CreateObject("ADODB.Connection") 
objcon.connectionString="DSN=something" 
objcon.Open 

内容close.asp的:

objcon.close 
set objcon=nothing 

请注意,我有多个连接和内存泄漏没有问题。我确切的问题是关于服务器对“Response.End”的行为。

+0

是的。你做。否则你可能最终会发生内存泄漏。 –

+1

那么,在调用Response.End之前,您可以调用Server.Execute(“close.asp”) –

+0

[使用Server.CreateObject(“ADODB.Connection”)](http:// stackoverflow .com/questions/7896241/connection-leaks-in-classic-asp-using-server-createobjectadodb-connection) – Lankymart

回答

0

Response.End停止进一步执行页面。从docs:“该文件的其余内容未处理。”所以,不,在这种情况下连接对象不会被清理干净。

最好先继续创建更细粒度级别的连接对象,然后尽快销毁/释放连接对象回ADO连接池,这是管理数据库的实际连接。重新使用连接对象会使其更容易被无法正确清理。