WCF常用的寄宿方式除了IIS寄宿外,还有一种方式是寄宿到windows服务中,跟随系统启动而启动。
1、在项目中选择“添加”--“新建windows服务”
2、打开系统生成的设计界面的代码,引用“using System.ServiceModel;”和WCFService、WCFServer、WCFModel三个项目文件
3、设计界面代码编写和app.config配置文件如下:
namespace WCFService.WindowsService { public partial class CalculatorServer : ServiceBase { public ServiceHost Host { get; set; } public CalculatorServer() { InitializeComponent(); } protected override void OnStart(string[] args) { if (Host != null) { Host.Close(); } Host = new ServiceHost(typeof(Calculate)); Host.Open(); } protected override void OnStop() { if (Host != null) { Host.Close(); Host = null; } } } }
配置文件
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> </startup> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="CaclulaterBehavior"> <serviceMetadata httpGetEnabled="true" /> </behavior> </serviceBehaviors> </behaviors> <services> <service behaviorConfiguration="CaclulaterBehavior" name="WCFService.Calculate"> <endpoint address="http://127.0.0.1:9999/Calculate" binding="wsHttpBinding" bindingConfiguration="" contract="WCFService.ICalculate" /> <host> <baseAddresses> <add baseAddress="http://127.0.0.1:9999/Calculate" /> </baseAddresses> </host> </service> </services> </system.serviceModel> </configuration>
4、回到设计界面,右键--“添加安装程序”,生成“ProjectInstaller.cs”文件
6、选中serviceInstaller1属性设计器,修改相应属性。
7、选中serviceProcessInstaller1,打开属性设计器
8、生成一下。在windows服务项目的bin/debug文件夹下会产生可执行文件。将整个debug文件拷贝到E盘。
9、执行安装。打开vs开发人员命令提示对话框,定位到E盘debug文件下。输入“InstallUtil E:DebugWCFService.WindowsService.exe”,完成安装。
10、在“管理工具”中打开“服务”,可以找到安装的服务。
11、双击,在弹出的对话框中点击“启动”,即可
12、运行客户端,可以得到想要的结果。
备注:
卸载服务命令:InstallUtil.exe -u WCFService.WindowsService.exe