我有一个作为Windows服务托管的WCF服务(VS 2010,.Net 4.0)。 我想要做的是:我想要一个在服务启动时执行的服务中的方法。
答案 0 :(得分:4)
我不确定您是如何使用Windows服务来托管您的WCF服务的,但我希望能够像@SSamra所描述的那样。
无论如何,无论你在哪里。打开(); 打开你的服务,你都可以初始化你的wcf代理并调用你的方法。
假设您的代理是FirstWcfProxy,那么您可以执行类似的操作,
var firstWcfProxy = new FirstWcfProxy();
// or IFirstWcfService firstWcfProxy = new FirstWcfProxy();
firstWcfProxy.YourMethod();
编辑: 如果你想确保在服务启动后立即调用该方法,请在 sHost.Open(); 行下面初始化你的代理并调用那里的方法,就像我上面描述的那样
答案 1 :(得分: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;
}
}
}