利用winform来承载WCF服务

一般而言,我们用控制台承载WCF服务只需这样写就行了:

//定义承载服务的类型和承载服务的基址
using (ServiceHost host = new ServiceHost(typeof(Service1), new Uri("http://localhost:8839/CalculatorService")))
{
//增加一个服务终结点
host.AddServiceEndpoint(typeof(IService1), new WSHttpBinding(), "CalculatorService");

//使用元数据
ServiceMetadataBehavior behavior = new ServiceMetadataBehavior(); //使用HTTP/GET请求
behavior.HttpGetEnabled = true;
//定义元数据发布地址
behavior.HttpGetUrl = new Uri("http://localhost:8839/CalculatorService/Metadata");
//将元数据的定义添加到承载服务中
host.Description.Behaviors.Add(behavior);
// 启动服务
host.Open();
Console.WriteLine("CalculatorService服务运行中...\n");
Console.WriteLine("按任意键退出.");
Console.Read();
// 关闭服务
host.Close();
}

然而,如果在winform里面,如果那样写的话,服务是起不来的,研究了大半个晚上,终于悟出原来是Using惹的祸,这样写就行了:

 

 ServiceHost host;

private void btnclose_Click(object sender, EventArgs e)
{
host.Close();
}

private void btnbegin_Click(object sender, EventArgs e)
{
host = new ServiceHost(typeof(Service1), new Uri("http://localhost:8839/CalculatorService"));
//增加一个服务终结点
host.AddServiceEndpoint(typeof(IService1), new WSHttpBinding(), "CalculatorService");

//使用元数据
ServiceMetadataBehavior behavior = new ServiceMetadataBehavior(); //使用HTTP/GET请求
behavior.HttpGetEnabled = true;
//定义元数据发布地址
behavior.HttpGetUrl = new Uri("http://localhost:8839/CalculatorService/Metadata");
//将元数据的定义添加到承载服务中
host.Description.Behaviors.Add(behavior);
// 启动服务
host.Open();
}

这样点击开始菜单,服务就Run起来了。

转载于:https://www.cnblogs.com/zhuzhuxia/archive/2012/09/28/2706586.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值