WCF(二)将WCF发布到WindowsService

  首先新建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);  好啦    终于结束了.....实在有看不懂的可以留下联系方式我把实例代码包发给你们哦

 

 

 

posted @ 2013-04-09 15:26  小兔兔  阅读(1040)  评论(0编辑  收藏  举报