创建简单的WCF服务

创建Service项目

在Visual Studio中新建项目,Class Library (.NET Framework),叫MyServie。

添加WCF Service

  1. 在创建好的项目中添加WCF Service,命名为MyService此时会有一个System,ServiceModel出现在引用中。
  2. 实现MyService类中的DoWork方法
namespace MyService
{
    public class MyService : IMyService
    {
        public void DoWork()
        {
            Console.WriteLine("Hello World!");
        }
    }
}

创建ServiceHost项目

  1. 新建一个Console Application (.NET Framework),叫MyServiceHost。
  2. 添加Assembly到项目中: System.ServiceModel。
  3. 将刚刚创建的MyService添加到MyServiceHost的引用中。
  4. 在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>
  1. 在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

  1. 创建一个控制台应用程序MyServiceClient
  2. 启动MyServiceHost
  3. 在Reference里面Add Service Reference,输入http://localhost:8080/
  4. 在Main方法里面输入下面的代码
MyService.MyServiceClient client = new MyService.MyServiceClient("BasicHttpBinding_IMyService");
client.DoWork();
  1. 运行,会发现MyServiceHost控制台里出现了Hello World!
posted @   mofayi  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示