创建简单的WCF服务
创建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。
- 添加Assembly到项目中: System.ServiceModel。
- 将刚刚创建的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!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构