与Casini一起使用时,ODP.NET调用挂起

时间:2011-05-11 19:27:57

标签: .net asp.net odp.net cassini

我在尝试在Web应用程序中实例化Oracle.DataAccess.Client对象时遇到问题。

为了测试这个,我创建了一个新的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,它可以正常工作,所以我的问题只有Casini。有没有人遇到过这个问题或对我有任何想法?我已经尝试重新安装oracle客户端和visual studio,我甚至尝试了旧版本的oracle客户端(112012而不是112021),结果相同。

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

感谢。

3 个答案:

答案 0 :(得分:0)

也许你应该考虑使用IIS Express代替卡西尼?

答案 1 :(得分:0)

如果你这样做,那么立即点击重新加载并再次点击页面而不重新启动调试器,你看到同样的事情吗?

我第一次看到在我的项目中调用ODP.net时出现延迟,因为Oracle客户端已加载,但从来没有这么长。它可能与网络服务器有关是非常奇怪的。

答案 2 :(得分:0)

问题在于您使用的ODP.Net版本:32位还是64位。

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

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