2011-05-11 57 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上運行它時,它工作正常。

相關問題