【发布时间】:2013-08-16 12:44:18
【问题描述】:
我们有一个使用 WCF 开发的 3 层应用程序。我们的 Web 层 [32 位 Windows 2003 Sp1] 调用 WCF 服务 [NLB 上的 64 位 Windows 2008 R2],它与 Oracle 10g DB [64 位 Linux] 进行通信。 DB 连接是使用 Nhibernate 2.2 建立的。 WCF 通信使用 BasicHTTPBinding。
在 32 位测试环境中,应用程序运行良好,但在上面指定的 Live 环境中,我们遇到了崩溃。根据记录,重复错误是,
System.ApplicationException :> 内部异常是
NHibernate.ADOException: 准备时选择 stderrorme0_.ERR_NO 作为 ERR1_10_, stderrorme0_.ERR_TYPE 为 ERR2_10_, .... ....,来自 STD_ERROR_MESSAGE stderrorme0_ 其中 stderrorme0_.ERR_NO=:p0 错误 发生---> System.InvalidOperationException:超时已过期。这 在从池中获取连接之前经过的超时时间。 这可能是因为所有池连接都在使用中,并且 已达到最大池大小。
此错误重复,只是正在获取的表发生更改。
临时解决方案:重新启动托管在 IIS 中的 WCF 服务。
请帮助我们提出您的建议和解决方案,以使其发挥作用。这篇文章是在各种博客之后经过多次试验和错误后提出的。
【问题讨论】:
-
最可疑的是not关闭连接和/或not事务见stackoverflow.com/q/1642252/1679310
标签: asp.net wcf nhibernate oracle11g timeoutexception