2010-07-06 140 views
1

我需要通過wcf服務共享我的應用程序統計信息。我能夠自我託管我的wcf服務,但ServiceHost對象構造函數是默認的,使我無法初始化我的服務的其他成員變量。將控制檯應用程序對象共享到自主主機WCF服務

樣品:

public interface IService 
{ 
    //some operations here 
} 

public class Service : IService 
{ 
    object myObject; 
    //implementation of IService 
} 

myObject的是我的控制檯應用程序對象(列表),我想使我的服務才能夠尋找到它。有什麼方法可以在我的WCF服務中引用它嗎?

+0

任何最終解決方案與完整的源代碼示例工作呢? – Kiquenet 2013-06-20 12:02:56

回答

1

您可以自己提供服務的實例creating自定義IInstanceProvider

+0

我會嘗試IInstanceProvider。我是否需要在我的app.config文件中添加一些內容?鏈接上的示例使用實現IContractBehaviorAttribute,IContractBehavior的類,但不顯示它是如何實例化的。 我正在託管我的服務,如下所示: ServiceHost dccaService = new ServiceHost(typeof(CreditControl.SOA.SOAP.Service)); dccaService.Open(); – powerbox 2010-07-06 06:43:58

+0

爲了註冊自定義實例提供程序,需要'IServiceBehavior'。然後你可以有一個自定義的'ServiceHost'。這是另一個演示整個過程的鏈接:http://initializecomponent.blogspot.com/2008/06/integrating-unity-with-wcf.html – 2010-07-06 07:00:22

+0

我創建了一個實現IServiceBehavior的類,該類實現了IInstanceProvider和一個實現IContractBehaviorAttribute和IContractBehavior的類。 我的服務的創建將和我上面發佈的一樣。我期待我的課程的實現IServiceBehavior將在SvcConfigEditor.exe擴展名下,當我瀏覽我的dll文件,但它不是。我做得對嗎? – powerbox 2010-07-06 07:42:15

0

你可以在你的服務實現代碼中使用此方法來獲取手柄上的ServiceHost實例:

ServiceHostBase base = OperationContext.Current.Host; 

現在你有一個鏈接到您的服務主機 - 任何公開使用和訪問可以被讀取(最好不要設置,因爲可能有很多服務類實例正在運行)。

+0

易於使用但很難進行單元測試。 – 2010-07-06 06:26:45