WCF服务的初次创建与引用服务
第一次创建WCF服务,看了这位大佬的博客,但还是出了点问题,现在解决掉了,所以做个总结。
代码实例
打开 VS 2013,选择 新建项目,选择 ”WCF”|”WCF 服务库 ”,注意这里是”WCF 服务库 ”,不是"WCF 服务应用程序"
确定后,系统会自动建立默认文件 ” Service1.cs”和” IService1.cs”,其实也是系统给你的示例
打开"IService1.cs",你可以看到系统给你的示例代码,将光标定位到"IService1"上,按F2健,可将接口重命为你想要的名子,重命名后将解决管理器中文件也同命修改。我修改为 ”IMyFirstService”;打开“Service1.cs",按相同方法修改
回到MyFirstService,在这里我定义了两个函数"Base64Encrypt"和"Base64Decrypt",请注意格式,[OperationContract]一定要有,否则外部无法访问。
切换到"MyFirstService",接口实现,编写具体代码。
好了,WCF服务库的代码部分就结束了,下面要开始配置,打开项目下的App.config文件
这里,我们主要看system.servicemodel节点,有2体个子节点"services"和"behaviors",其中"behaviors"节点主要是安全和调试方面的设置,我们不在此讨论,主要说一下第1个子节点"services",我们来看一下"services"节点内容
估计大多数人和我一样,这些是什么乱七八糟的东西,头大。既然开头说了,本文只说如何实现,所以不说其所以然了,肯定,这样的配置无法在后面的宿主里成功调用,为什么呢,因为缺少了binding的配置,而默认并未生成配置节点,那好我们自己来加,注意标识的地方**(额外注意蓝框,容易忽视出错)**
配置一下项目属性,我的生成目录在F:\WCFTEST,生成项目
好的,WCF服务库已工作已结束。
开始宿主程序
在初步学习的时候看的是创建Windows服务的宿主程序,运行过程中发现步骤比较繁琐,容易卡在一些报错上,所以这里介绍一个简单的创建宿主的方法。
这里介绍的是创建控制台应用程序来进行寄宿,虽然实用性不如Windows服务和IIS,但是毕竟是初次接触WCF服务,所以还是简单直接一点比较好。
我们先新建一个项目,选择控制台应用程序。
然后添加引用
接下来看代码
代码很简单,就几行,接下来要添加配置文件,
接下来打开这个文件,你会发现里面基本没有什么内容,接下来我们直接把之前创建WCF服务时改好的App.config中的内容直接复制过来,也就是说两个文件的内容一模一样。
开始编写客户端调用
右击解决方案|添加|新建项目|Windows|windows 窗体应用程序,项目名就默认吧(WindowsFormsApplication1),添加2个label,2个textbox,3个button
右击引用|添加服务引用,服务地址在windows服务项目中App.config文件中,依次展开找到system.serviceModel|services|service|host|baseAddresses|add节点,baseAddress等于号后的双引号中的字符串即为服务地址,注意如果是生产环境,那么你服务所使用的端口号在开启。本例地址为“http://localhost:8732/Design_Time_Addresses/MyTestWcfServiceLibrary/Service1/”
如果出现报错(下载“http://localhost:8733/Design_Time_Addresses/MyTestWcfServiceLibrary/Service1/_vti_bin/ListData.svc/$metadata”时出错。
无法连接到远程服务器
由于目标计算机积极拒绝,无法连接。 127.0.0.1:8733
元数据包含无法解析的引用:“http://localhost:8733/Design_Time_Addresses/MyTestWcfServiceLibrary/Service1/”。
没有终结点在侦听可以接受消息的 http://localhost:8733/Design_Time_Addresses/MyTestWcfServiceLibrary/Service1/。这通常是由于不正确的地址或者 SOAP 操作导致的。如果存在此情况,请参见 InnerException 以了解详细信息。
无法连接到远程服务器
由于目标计算机积极拒绝,无法连接。 127.0.0.1:8733
如果该服务已在当前解决方案中定义,请尝试生成该解决方案,然后再次添加服务引用。)
请启动之前创建好的WCFConsole,(VS调试启动即可,勿关闭调试,然后再试)
成功添加服务引用之后新项目显示如下
此时,服务地址是localhost,所以可以直接引用成功,如果服务地址是一个网络地址,需要在宿主服务器中将服务启动后才可以引用服务,否则会提示找不到服务。也就是说如果你的服务地址是“http://192.168.1.1:8732/Design_Time_Addresses/MyTestWcfServiceLibrary/Service1/”,,那么你要先将服务安装并启动服务,这样才可以添加服务引用
客户端代码
设为启动项目,运行
编码
解码
必须在控制台应用程序(即宿主程序)开启的情况下才能运行客户端。
本文所有文件下载:https://download.csdn.net/download/wubing4132/12569215
参考文章:https://www.cnblogs.com/pangguoming/p/7494946.html