2013-01-14 54 views
0

我試圖在64位Win 7上開發WCF服務。 此服務必須利用第三方組件來完成它的工作。在Win 7上開發WCF服務64位

第三方組件實例化這樣

ThirdPartyib.ThirdPartyClass objThird = new ThirdPartyib.ThirdPartyClass; 

調用該方法給出了錯誤

* 無法調用服務。可能的原因:服務處於脫機狀態或無法訪問;客戶端配置與代理不匹配;現有的代理無效。有關更多詳細信息,請參閱堆棧跟蹤。您可以嘗試通過啓動新代理,還原爲默認配置或刷新服務來進行恢復。 *

當我註釋掉第三方DLL的實例化部分並返回一個簡單的字符串時,它工作正常。事實上,我甚至嘗試在服務本地創建一個文件夾,這也起作用。 我能爲該服務使用第三方dll做些什麼?

此第三方DLL是32位。

+1

您是否嘗試直接從瀏覽器調用方法? – dutzu

+0

您可以激活服務web.config中的跟蹤以查看服務器端的實際故障。 –

+0

您是否嘗試過調試您的服務?或者製作一個控制檯應用程序並創建第三方組件的實例並查看會發生什麼。 –

回答

0

您是否在IIS中託管此應用程序?在這種情況下,您需要使用x64和/或anyCpu庫。或者你將不得不tell IIS it's ok to run in 32-bit mode

+0

這將作爲Windows服務託管。當我們轉到Win 64上的VS 2010時,我們在開發桌面應用程序時遇到了與上述第三方DLL相同的問題,但通過選擇用於構建的x86選項解決了這個問題。這個選項似乎沒有幫助,也許我不知道如何使用它! – Codehelp

+0

檢查:http://stackoverflow.com/questions/1079066/forcing-a-net-windows-service-to-run-as-32-bit-on-a-64-bit-machine – jessehouwing

0

您需要將整個服務編譯爲x86。這包括您的所有項目:託管WCF服務的服務應用程序,包含WCF服務定義的DLL(如果存在此類DLL)以及您使用的所有其他庫不編譯爲任何CPU並且你在開發。

簡而言之:整個解決方案必須僅限於x86。

相關問題