WCF只有服务端响应

原创 2015年07月10日 17:51:32

wcf服务端

1,新建一个“windows窗体程序”名称为WCFServer1。


2,然后添加一个“WCF服务”名称为Service1。具体步骤为:解决方案试图中,选中“WCFServer1”项目,右键,在弹出菜单中选择“添加->新建项”。


3,双击主窗体,在它的Load事件中编写代码启动wcf服务:BasicHttpBinding方式启动wcf服务。此文件代码如下:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

using System.ServiceModel;

using System.ServiceModel.Description;

 

namespace WCFServer1

{

    public partial class Form1 : Form

    {

        ServiceHost m_ServiceHost;

 

        publicForm1()

        {

            InitializeComponent();

        }

 

        privatevoid Form1_Load(objectsender, EventArgs e)

        {

            m_ServiceHost = new ServiceHost(typeof(Service1));//Service1wcf服务的类名称 

      

            //BasicHttpBinding方式启动wcf服务 

            ServiceMetadataBehaviormetadataBehavior;

            metadataBehavior =m_ServiceHost.Description.Behaviors.Find<ServiceMetadataBehavior>();

            if(metadataBehavior == null)

            {

                metadataBehavior = new ServiceMetadataBehavior();

                metadataBehavior.HttpGetEnabled= true;

                metadataBehavior.HttpGetUrl = new Uri(string.Format("http://localhost:10085/WCFHostServer/Service1"));

               m_ServiceHost.Description.Behaviors.Add(metadataBehavior);

            }

            else

            {

                metadataBehavior.HttpGetEnabled= true;

                metadataBehavior.HttpGetUrl = new Uri(string.Format("http://localhost:10085/WCFHostServer/Service1"));

            }

            m_ServiceHost.Open();

        }

 

        privatevoid FormService_FormClosing(object sender, FormClosingEventArgse)

        {

            if(m_ServiceHost != null)

            {

                m_ServiceHost.Close();

                m_ServiceHost = null;

            }

        }

    }

}

 

4,在 IService1.cs中增加一个方法GetSvrTime

using System;

using System.Collections.Generic;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.Text;

 

namespace WCFServer1

{

    // 注意: 使用重构菜单上的重命名命令,可以同时更改代码和配置文件中的接口名“IService1”

    [ServiceContract]

    public interface IService1

    {

        [OperationContract]

        voidDoWork();

 

        [OperationContract]

        stringGetSvrTime();

    }

}

5, 在Service1.cs中实现接口的方法GetSvrTime,获取服务器时间

using System;

using System.Collections.Generic;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.Text;

 

namespace WCFServer1

{

    // 注意: 使用重构菜单上的重命名命令,可以同时更改代码和配置文件中的类名“Service1”

    public class Service1 : IService1

    {

        public void DoWork()

        {

        }

 

        public string GetSvrTime()

        {

            returnDateTime.Now.ToString();

        }

    }

}

 

第二步:WCF客户端

1,新建一个“windows窗体程序”命名为WCFClient1。

2,在Debug中运行WCFHostServer窗体(这一步很重要),然后在项目WCFHostClient中右键--》“添加服务引用”,在地址填入以BasicHttpBinding绑定方式启动wcf服务的地址http://localhost:10085/WCFHostServer/Service1,点击“前往”,然后连接上后点击“确定”,在WCFHostClient项目中就会增加一个Service References(ServiceReference1)


3,主窗体上增加一个按钮,双击此按钮添加响应事件。

using WCFClient1.ServiceReference1;

using System.ServiceModel;

//...

 

private voidbutton1_Click(object sender, EventArgs e)

        {

            //basicHttpBinding绑定方式的通讯单工 

            Service1Clienthost = new ServiceReference1.Service1Client();

            stringhtime = host.GetSvrTime();//调用GetSvrTime获取到wcf服务器上的时间 

            MessageBox.Show("basicHttpBinding" + "@" + htime);

 

            //NetTcpBinding绑定方式的通讯双工 

            IService1m_Innerclient;

            ChannelFactory<IService1> m_ChannelFactory;

            NetTcpBindingbinding = new NetTcpBinding();

            UribaseAddress = new Uri("net.tcp://localhost:10085/WCFHostServer/Service1");

            m_ChannelFactory = new ChannelFactory<IService1>(binding, newEndpointAddress(baseAddress));

            m_Innerclient =m_ChannelFactory.CreateChannel();

            stringhtime1 = m_Innerclient.GetSvrTime();//调用GetSvrTime获取到wcf服务器上的时间 

            MessageBox.Show("NetTcpBinding" + "@" + htime1); 

        }

 

 


WCF----UserName身份验证全记录

转载http://www.cnblogs.com/chenxizhang/archive/2009/05/13/1455582.html 我现在用一个实录的方式,介绍一下UserName的身...
  • quan278905570
  • quan278905570
  • 2015年02月04日 16:08
  • 1378

(WCF初体验)WCF服务器诊断

WCF服务器搭建好之后,不管是客户端访问还是本地调试,出个问题抛出来的原因往往在我们看来都是不知所以然的,更可能是跑出来的问题和真正的问题差了很远,比如“通信对象 System.ServiceMode...
  • u010724686
  • u010724686
  • 2015年02月15日 11:41
  • 638

操作Wcf服务端Config文件

#region 操作Wcf服务端Config文件 /// /// 修改Config文件中wcf服务IP地址与端口 /// /// C...
  • wangbo0922
  • wangbo0922
  • 2017年04月10日 09:29
  • 408

wcf 连接出错的情况下关闭连接。

在.NET Framework中,一个资源(尤其是非托管资源)通常都需要实现IDisposable接口,这样就可以通过using释放占有的资源,但是如果using块中的语句抛出了异常,资源可能就无法正...
  • wangsui99
  • wangsui99
  • 2013年11月28日 16:09
  • 1056

C# Winform WCF 调试服务端的程序(三种方法)

转载:作者:jiankunking 出处:http://blog.csdn.NET/jiankunking 方法一: 服务端设置: 1、打开需要调试的解决方案,在WCF服务端项目上右...
  • wangxiaojia42121
  • wangxiaojia42121
  • 2016年10月29日 08:39
  • 1753

我的WCF数据服务(一)瓶颈

起初,公司的网站是个小网站,每天访问几千IP,虽然我们两个技术看起来很忙,其实老板让做的东西都是些零碎东西,差不多百分之八十工作都是页面改版。看这个页面不顺眼,就改一版;那个页面不顺眼,也改一版。有时...
  • zl33842902
  • zl33842902
  • 2016年08月17日 18:25
  • 505

WCF 响应超时问题

错误信息: 有关调用实时(JIT)调试而不是此对话框的详细信息, 请参见此消息的结尾。 ************** 异常文本 ************** System.TimeoutExcept...
  • xunzaosiyecao
  • xunzaosiyecao
  • 2015年04月23日 14:44
  • 2168

silverlight学习之路(2)异步编程趋于同步 利用async和await调用wcf服务

首先非常感谢张伟文老师。
  • duyelang
  • duyelang
  • 2014年09月10日 14:12
  • 1052

WCF 配置服务 演示

1、搭建IIS(具体步骤略)2、服务契约如下:namespace JianKunKing.NewVersion.Service { // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更...
  • xunzaosiyecao
  • xunzaosiyecao
  • 2015年11月26日 12:29
  • 1948

WCF+EF初结合(简单篇)

由于本人使用的是VS2015开发的,所以所讲的都是在vs2015下开发的内容 准备工具,工欲善其事,必先利其器。         1、下载EntityFramework 6.0,当然可以在项目中右键单...
  • fegda
  • fegda
  • 2015年12月01日 23:25
  • 1210
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WCF只有服务端响应
举报原因:
原因补充:

(最多只允许输入30个字)