写一个简单控制台启动的mcv服务
1.在项目工程里添加wcf服务,工程中会出现两个文件IService.cs和Service.cs.
IService.cs中定义服务中的接口,接口必须加特性[OperationContract]才能在客户端添加服务后,实例化对象中发现该函数。
namespace ConsoleApplication1 { [ServiceContract] public interface IMyService { [OperationContract] void DoWork(); [OperationContract] void MyFunction(); } }
Service.cs中实现接口
2.添加一个服务后,app.config配置服务信息。配置文件信息可以通过vs 提供的wcf服务配置编辑器来生成,具体可以在网上查到。添加service和contract几个关键节点。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name=""> <!--在部署前将以下值设置为 false 避免泄漏元数据信息--> <!- --这个信息在用户添加服务时使用,不然客户端无法通过添加服务引用找到服务 --> <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 --> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior> </serviceBehaviors> </behaviors> <services> <service name="ConsoleApplication1.MyService"> <endpoint address="" binding="basicHttpBinding" contract="ConsoleApplication1.IMyService"> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> <host> <baseAddresses> <!-用户客户端添加服务引用的地址- --> <add baseAddress="http://192.168.1.109:8733//MyService/" /> </baseAddresses> </host> </service> </services> </system.serviceModel> </configuration>
3.启动服务。
在main中添加如下代码
ServiceHost host = new ServiceHost(typeof(MyService)); //把WCF的service宿主在这里 host.Open(); Console.WriteLine("服务已经启动"); Console.Read();
这样这个服务就已经启动了。
3-1.不编写配置文件也可以启动服务,需要在代码里对配置信息进行确定。
using (ServiceHost host = new ServiceHost(typeof(MyWcfService.Service))) { host.AddServiceEndpoint(typeof(MyWcfService.IService), new WSHttpBinding(), "http://localhost:9999/Service.svc"); if (host.Description.Behaviors.Find<ServiceMetadataBehavior>() == null) { ServiceMetadataBehavior behavior = new ServiceMetadataBehavior(); behavior.HttpGetEnabled = true; behavior.HttpGetUrl = new Uri("http://localhost:9999/Service1/hi"); host.Description.Behaviors.Add(behavior); } host.Opened += delegate { Console.WriteLine("服务已经启动,按任意键终止服务!"); }; host.Open(); Console.Read();
这样也可以启动服务。
4.引用服务
在任意工程中添加服务引用,在地址栏中添加http://192.168.1.109:8733//MyService/,就能找到该服务进行添加了。
5.使用服务
在引用了服务的工程代码中加入如下语句。
MyServiceReference.MyServiceClient mc = new MyServiceReference.MyServiceClient();
就可用mc来调用服务中的函数了。

浙公网安备 33010602011771号