一、首先创建一个类库,用来定义WCF服务
修改服务代码定义,具体代码如下
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IHelloService”。
[ServiceContract]
public interface IHelloService
{
[OperationContract]
string GetMessage(string message);
}
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的类名“HelloService”。
public class HelloService : IHelloService
{
public string GetMessage(string message)
{
return message + "@" + DateTime.Now;
}
}
二、创建一个控制台项目,用来承载WCF服务
1、首先添加对服务类库的引用,并添加引用System.Service.Model
2、修改配置文件,在 <system.serviceModel> </system.serviceModel>
节点中设置服务相关节点信息、绑定信息以及基地址,具体代码如下
<system.serviceModel>
<services>
<service name="SimpleService.HelloService">
<!--设置服务节点,服务的地址直接采用基地址,使用basicHttpBinding-->
<endpoint address="" binding="basicHttpBinding" contract="SimpleService.IHelloService">
</endpoint>
<!--设置元数据交换节点-->
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange">
</endpoint>
<host>
<baseAddresses>
<!--服务的基地址用来访问获取元数据-->
<add baseAddress="http://localhost:8057/HelloService"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="HttpGetEnable">
<!--公开元数据,正是部署时候应该去掉防止元数据泄露-->
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="NoneSecurity">
<!--取消安全验证-->
<security mode="None">
</security>
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>
3、启动服务
在main方法中加入如下代码启动服务
using (ServiceHost host = new ServiceHost(typeof(HelloService)))
{
host.Open();
Console.WriteLine("WCF 已经启动@" + DateTime.Now);
Console.ReadKey();
}