2011-06-07 107 views
2

我已經使用Oracle提供的XCopy 11.2安裝了用於64位機器的Oracle客戶端(根據讀者指示安裝了所有內容)。如何使64位機器上的ODP.NET 4.0(64位)工作在Windows 7上?

我使用的是Visual Studio 2010,該項目的類型爲ASP.NET網站。

當我嘗試使用上面安裝的Oracle Connection執行我的ASP.NET網站時,它在編譯期間給出了web.config文件中的錯誤。

**

「無法加載文件或組件 'Oracle.DataAccess,版本= 4.112.2.0, 文化=中性 公鑰= 89b483f429c47342' 或一個依賴的 之一。該系統 找不到指定」文件

**

它的工作,如果我改變的價值在IIS應用程序池中啓用32位應用程序爲True。

但我的要求是使它在64位ODP.NET連接器上工作,所以我不想將啓用32位應用程序的值更改爲True。

所以,如果你可以請幫我找到答案,將不勝感激。請幫我解決上述錯誤。

回答

4

處理此問題的最佳方法是在服務器上使用帶有IIS的本地Visual Studio和x64版本的x86版本。 要做到這一點,你必須下載兩個版本 - 複製一個文件夾lib \ x86和另一個lib \ x64 之後,你必須修改項目文件 - visual studio支持條件引用。加入下面的部分到你的項目文件:

<PropertyGroup> 
    <ReferencesPath Condition=" '$(Platform)' == 'x86' ">..\Lib\x86</ReferencesPath> 
    <ReferencesPath Condition=" '$(Platform)' == 'x64' ">..\Lib\x64</ReferencesPath> 
</PropertyGroup> 

此引用後,odp.net assmebly這樣的:

<Reference ... processorArchitecture=$(Platform)"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>$(ReferencesPath)\Oracle.DataAccess.dll</HintPath> 
    <Private>True</Private> 
</Reference> 

這樣的時候,你可以爲x86和對服務器的x64始終把本地構建正確版本的Oracle.DataAccess.dll將被引用。

或者,如果您只想使用x64版本,則必須堅持使用IIS,即使您在本地工作,或者您也可以嘗試在x64模式下運行開源版本的Cassini(http://cassinidev.codeplex.com )。

對我來說,最好的辦法就是引用上述兩個版本 - 這對我的團隊中的每個人都適用了一段時間。

+0

嗨非常感謝大家的回覆。但我們無法應用此設置,因爲我們使用ASP.NET網站模型而不是ASP.NET Web App項目。請讓我知道我們是否也可以將這種設置應用於ASP.NET WEbsite模型..再次感謝您的答覆。 – user788312 2011-06-08 15:55:04

+0

對於一個網站項目 - 你可以嘗試做類似的web.config轉換 - 例如在web.config.debug引用x86版本和web.config.release。 – devdimi 2011-06-09 10:49:43

+0

的含義是什麼? – 2011-07-29 11:07:11

1

由於Oracle客戶端安裝不會將Oracle.DataAccess.dll註冊到程序集中,因此您必須安裝64-bit Oracle Data Access Components (ODAC)

如果您的oracle數據訪問安裝正常,在您的應用程序池設置中取消選中「啓用32位應用程序」後,所有內容都應該可以正常工作。

如果仍然存在相同的錯誤,則可能在網站的bin文件夾中有32位dll。只需刪除它,網站將使用程序集中的64位,它應該可以工作。

相關問題