我有一個過程,我們稱之爲過程A,它承載通過基本Http綁定公開的簡單WCF服務。如果我啓動該進程,則可以從另一個進程(進程B)訪問該服務,而不會出現問題。從遠程DLL調用WCF服務
但是,我所需的用例並不那麼簡單。我需要做的是從一個使用Remoting託管的DLL訪問服務。遠程DLL通過進程A在單獨的AppDomain中啓動,並且位於本地計算機上。
當我從進程A調用遠程DLL中的一個方法,進程A反過來應該調用過程A中託管的WCF服務時,調用者只是掛起,一分鐘後我得到服務超時。服務代碼永遠不會被輸入(當從外部調用外部函數時,會觸發一個斷點)。
Remoting DLL 是能夠創建客戶端代理類的一個實例的事實告訴我(如果我在這裏,請糾正我)該服務的配置至少在Remoted客戶端中可用。如果我刪除了服務引用,它不會抱怨丟失的配置信息,或者拋出異常,像在外部客戶端中那樣。
所以我想我的問題是多方面的。首先,遠程DLL可以首先調用WCF服務(即客戶端可用的所有必需基礎結構)嗎?如果可以,我會錯過什麼?一個人怎麼去調試這樣的事情呢?調試遠程是一件很簡單的事情 - 這並不是那麼簡單。
最後一件事 - 我無法改變我在一個遠程處理DLL的過程中,並且遠程DLL需要使用該服務。這是該應用程序基礎架構中深深紮根的部分。但是,如果WCF服務有任何用處,我可以將它們託管到另一個進程(我可以在等待這裏的任何答案時嘗試這種方式)。
這一切都在同一臺機器上。難道這個類可以創建的事實告訴我一些配置正在被讀取,不一定這是正確的,但至少它是被發現和加載的? – ctacke 2009-10-29 14:21:36
我不認爲WCF關心呼叫到達的「來自哪裏」。 爲什麼您使用WCF服務的同一進程中的遠程dll? – Dani 2009-10-29 14:23:03
您可以使用錯誤的參數創建代理,直到您調用某些內容爲止 - 它不會引發異常。 – Dani 2009-10-29 14:28:14