2011-10-12 162 views
2

我有一個作爲Windows服務託管的WCF服務(VS 2010,.Net 4.0)。 我想要做的是這樣的:我想要一個服務中的方法在服務啓動時執行。WCF服務啓動時調用方法

+0

你試過了什麼?你如何在你的Windows服務中啓動WCF主機?顯示你的OnStart方法執行請 –

+0

做什麼?有一個覆蓋某處來定製配置等。 –

+0

@DavidePiras我沒有OnStart方法。其實,這是我的問題。 –

回答

4

我不知道你是如何使用的Windows服務來託管WCF服務(S),但我希望像@SSamra描述的東西。

無論如何,低於你所在的行.Open();打開你的服務,你可以初始化你的wcf代理並調用你的方法。

說你的代理是FirstWcfProxy,那麼你可以做這樣的事情,

var firstWcfProxy = new FirstWcfProxy(); 
// or IFirstWcfService firstWcfProxy = new FirstWcfProxy(); 

firstWcfProxy.YourMethod(); 

編輯: 如果你想確保該方法只要在服務啓動調用初始化線下代理sHost.Open();並調用那裏的方法,就像我上面描述的那樣

+0

我要去用這個。 Tnx :) –

3
how about 

    using System.Collections.Generic; 
using System.ComponentModel; 
using System.Diagnostics; 
using System.ServiceProcess; 
using System.ServiceModel; 

namespace Windows_Service 
{ 
    public partial class WCFWindowsService : ServiceBase 
    { 
    ServiceHost m_serviceHost; 

    protected override void OnStart(string[] args) 
    { 
     m_serviceHost = new ServiceHost(typeof(FirstWcfService.Service)); 
     m_serviceHost.Open(); 
    } 

    protected override void OnStop() 
    { 
     if (m_serviceHost != null) 
     { 
     m_serviceHost.Close(); 
     } 
     m_serviceHost = null; 
    } 
    } 
} 
+0

我沒有.svc文件。實際上,projcet是WCF庫服務。正如我所說,我沒有OnStart方法。 –

+0

@ user96 OnStart屬於Windows(NT)服務。但我開始認爲你正在使用IIS託管。你是否在某處創建了ServiceHost? –

+0

不,我不使用IIS託管。我使用Windows託管。 sHost = new ServiceHost(typeof(WCFserviceLibrary.Jobs)); sHost.Open(); 我想從WCFserviceLibrary中調用一個方法。 –