我们有一个使用 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_ where stderrorme0_.ERR_NO=:p0 发生错误---> System.InvalidOperationException:超时已到期。在从池中获取连接之前超时时间已过。这可能是因为所有池连接都在使用中并且达到了最大池大小。
此错误重复,只是正在获取的表发生更改。
临时解决方案:重新启动托管在 IIS 中的 WCF 服务。
请帮助我们提出您的建议和解决方案,以使其发挥作用。这篇文章是在各种博客之后经过如此多的试验和错误后提出的。