我可以在 Session 对象中存储数据库连接吗?

有帮助吗?

解决方案 4

从这个链接 http://support.microsoft.com/default.aspx/kb/243543

您不应该在会话中存储数据库连接。

据我了解,如果您这样做,那么同一用户的后续 ASP 请求必须使用相同的线程。

因此,如果您有一个繁忙的站点,那么“您的”线程可能已经被其他人使用,因此您必须等待它变得可用。

将其乘以更多的用户,您将得到每个人都在等待其他人的线程和一个响应不太灵敏的网站。

其他提示

通常不建议这样做,应用程序变量中的连接字符串以及一个很好的辅助函数/类是更推荐的方法。 这里 是有一定参考意义的。 (死链接已删除,因为它现在指向钓鱼网站)

我似乎记得这样做会产生单线程应用程序的效果,这将是一件坏事。

一般来说,我不会在应用程序变量中存储任何对象(当然也不会在会话变量中)。

当谈到数据库连接时,这是绝对不能做的。除此之外,完全没有必要。

如果您使用ADO与数据库通信,如果您使用 相同的连接字符串 (是的,无论如何,存储 对于所有数据库连接,“连接池”将在幕后实现。这意味着当您释放连接时,它实际上并没有被破坏 - 它被放置到一侧以供下一个想要相同连接的人使用。因此,下次您请求相同的连接时,它会被“现成”使用,而不必显式创建和实例化 - 这是一个相当不错的效率改进。

正如 CJM 所说,不需要在 Session 对象中存储连接:连接池要好得多。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top