首先新建WCF服务库。跟上一节的方式一样
其次呢,建立WindowsService.
添加对WCF服务库的引用,配置config。配置方式跟上一节也一样....
上码:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Niki.WindowsServiceHost.ServiceWindowsBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="Niki.WindowsServiceHost.ServiceWindowsBehavior"
name="Niki.WcfServiceLibrary.Service1">
<endpoint address="" binding="wsHttpBinding" contract="Niki.WcfServiceLibrary.IService1">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8732/Design_Time_Addresses/Niki.WindowsServiceHost/ServiceWindows/" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
</configuration>
紧接着编写 WindowsService后台代码
ServiceHost host=new ServiceHost(typeof(Service1));
public WCFServiceHost()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
host.Open();
}
protected override void OnStop()
{
host.Close();
}
当然了,这里你首先需要引用System.servicemodel库
好吧,马上就要竣工了。在WindowsService的设计界面中右键,添加安装(Add Installer)
设置serviceInstaller1 的 starttype属性为 Automatic 当然啦 这是自动的啦。serviceProcessInstaller1的Account 属性为 serviceProcessInstaller1
重新生成。当然是生成exe文件啦...比如说名字叫XXXXX.exe
在开始运行中 运行 InstallUtil XXXXX.exe -i 好吧,这里我偷懒了,你需要在这里添加完整路径。我这只是简写-i呢是安装 -u呢是卸载哦 最后敲回车
打开服务列表...亲,你不知道怎么打开?那去问问度娘吧。。。。找到你刚才的WindowsService。双击 然后点启动 或者直接右键启动 OK!
接下来我们测试。到你的配置文件中找出你的基地址
<host>
<baseAddresses>
<add baseAddress="http://localhost:8732/Design_Time_Addresses/Niki.WindowsServiceHost/ServiceWindows/" />
</baseAddresses>
</host>
将后面Http那一串放到浏览器中测试一下,看是不是能正常访问。哼哼~能正常浏览嘛,那就是可以了喽。否则嘛...还用我说么,当然是出错啦。看看你是不是哪里配置不对。
最后 新建一个测试项目。控制台哒...添加服务应用,当让 引用地址就是刚才基地址里面的啦。然后嘛,您就测测啦
比如我的就是这个
ServiceReference1.IService1 service1=new Service1Client();
var x= System.Console.ReadLine();
var output= service1.GetData(Convert.ToInt32(x));
Console.WriteLine(output); 好啦 终于结束了.....实在有看不懂的可以留下联系方式我把实例代码包发给你们哦