创建Service项目
在Visual Studio中新建项目,Class Library (.NET Framework),叫MyServie。
添加WCF Service
- 在创建好的项目中添加WCF Service,命名为MyService此时会有一个System,ServiceModel出现在引用中。
- 实现MyService类中的DoWork方法
namespace MyService
{
public class MyService : IMyService
{
public void DoWork()
{
Console.WriteLine("Hello World!");
}
}
}
创建ServiceHost项目
- 新建一个Console Application (.NET Framework),叫MyServiceHost。
- 将刚刚创建的MyService添加到MyServiceHost的引用中。
- 在App.Config中添加下面的section
<system.serviceModel>
<bindings />
<client />
<services>
<service name="MyService.MyService" behaviorConfiguration="mexBehaviour">
<endpoint address="MyService" binding="basicHttpBinding" contract="MyService.IMyService" />
<endpoint address="MyService" binding="netTcpBinding" contract="MyService.IMyService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/"/>
<add baseAddress="net.tcp://localhost:8090/"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="mexBehaviour">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
- 在Main方法里面添加以下代码
using (ServiceHost host = new ServiceHost(typeof(MyService.MyService)))
{
host.Open();
Console.WriteLine("Host started @ " + DateTime.Now.ToString());
Console.ReadLine();
}
此时直接启动会报错,用管理员权限打开VS或者编译后的exe文件可以解决。
如果不想每次都用管理员权限打开,就用管理员权限在CMD执行下面的命令。
netsh http add urlacl url=http://+:8080/ user =domain\user
连接WCF Service Host
- 创建一个控制台应用程序MyServiceClient
- 启动MyServiceHost
- 在Reference里面Add Service Reference,输入http://localhost:8080/
- 在Main方法里面输入下面的代码
MyService.MyServiceClient client = new MyService.MyServiceClient("BasicHttpBinding_IMyService");
client.DoWork();
- 运行,会发现MyServiceHost控制台里出现了Hello World!