運行平臺: Windows 7 64位操做系統php
運行環境: IIS 7html
編程語言:C#數據庫
數據庫: 32位的Oracle 10g編程
運行緣由:64位操做系統C#客戶端程序經過WCF訪問ORACLE數據庫服務器
結果產生異常:System.InvalidOperationException: 未在本地計算機上註冊「MSDAORA」提供程序app
客戶端程序在本地運行可以正常訪問Oracle數據庫數據, 但經過WCF鏈接不上Oracle數據庫, 一開始覺得是"MSDAORA"驅動沒裝上,經過檢查,MSDAORA其實已經存在, Oracle Client 也已經裝上,但仍是不行。經過百度搜索發現MSDAORA沒有用64bit的驅動,因而按照網上給出的解決方案進行嘗試:編程語言
方案:把程序所有(包括全部的DLL)從新編譯,編譯的目標是x86(32位), 而後再發布到遠程服務器上。ui
按照網上給出的方案對因此項目將編譯目標改爲x86後從新編譯,運行客戶端程序的時候卻又出現了新的問題:url
難道網上給出的方案不行嗎?第一次遇到這種問題,百思不得其解,只能又求助於百度。通過又一輪的百度,發現將項目編譯目標改爲x86後從新編譯還不夠,還須要spa
配置一下IIS的應用程序池,將應用程序池配置成「啓用32位應用程序」,以下圖所示配置:
通過更改IIS應用程序池配置後,再運行客戶端程序,OK一切正常。
備註:由於客戶端程序用C#編寫因此標題中有C#關鍵字,可是其它編程語言編寫的客戶端程序可能也會遇到一樣的問題。