2011-05-11 54 views
0

我在尝试实例化Web应用程序中的Oracle.DataAccess.Client对象时遇到问题。当与Casini一起使用时,ODP.NET调用挂起

为了验证这一点,我创建了一个新的asp.net web应用程序,并插入下面的代码的代码背后的Default.aspx的:

protected void Page_Load(object sender, EventArgs e) 
    { 
     Oracle.DataAccess.Client.OracleConnection conn = new Oracle.DataAccess.Client.OracleConnection(); 
     Oracle.DataAccess.Client.OracleCommand client = new Oracle.DataAccess.Client.OracleCommand(); 
    } 

到的OracleConnection()的调用将采取2.5分钟返回,但OracleCommand()将会很快。如果我颠倒了2次调用的顺序,反过来会发生,而OracleCommand()将挂起。

如果我将此代码部署到IIS,它工作正常,所以我的问题只与卡西尼。有没有人遇到过这个问题或对我有任何想法?我曾尝试重新安装oracle客户端和visual studio,我甚至尝试了一个较老版本的oracle客户端(112012而不是112021),结果相同。

此外,我正在使用新的Windows 7计算机,并且在以前的计算机上没有遇到此问题。

谢谢。

回答

0

也许你应该考虑使用IIS Express而不是卡西尼?

+0

我来看看。我喜欢开心的卡西尼的方便,但这可能是一个体面的工作。 – zaq 2011-05-11 22:07:38

+0

配置正确,IIS Express的工作方式与Cassini完全相同,除了实际上是IIS。 – 2011-05-11 22:36:37

+0

这似乎工作得很好。它仍然让我感到害怕,它不会在Windows 7上的Cassini中起作用,因为它在我以前的Windows XP机器上完成,但IIS Express似乎是一个不错的选择。 – zaq 2011-05-12 16:35:58

0

如果你这样做,然后立即重新加载并重新打开页面,而不重新启动调试器,你看到相同的东西?

我第一次在Oracle客户端加载时遇到了在我的项目中调用ODP.net的东西时看到了延迟,但从来没有这么长时间。它可能与Web服务器有关是非常奇怪的。

+0

是的,延迟只是页面第一次被击中。实际上只有第一次实例化任何特定的ODP对象。直到我停止卡西尼并重新开始,延迟才会再次发生。 – zaq 2011-05-11 22:09:52

+0

IIS必须做些事情来保持ODP.net的加载,而当Cassini消失时它会关闭。这仍然是一个非常长的延迟。你使用的是Beta ODP.net吗?这是一个完整的“厚”Oracle客户端安装,还是只是.net的东西? – Tridus 2011-05-12 10:17:48

+0

这是完整的Oracle客户端安装。在这一点上,我几乎已经放弃了卡西尼。我按照上面的建议尝试了IIS Express,它工作正常。 – zaq 2011-05-12 16:34:46

0

问题是你使用的是哪个ODP.Net版本:32或64位。

无论您的操作系统是32位还是64位,Visual Studio都以32位进程运行。 卡西尼也作为一个32位进程运行。 在IIS 7.5上(在Win7-64位上),可以将应用程序池配置为以32位或64位运行。

所以,如果你使用ODP.Net 64位和Casini(32位),你会遇到问题。 但是,当您在IIS上运行它时,它工作正常。

相关问题