本文参考自http://www.cnblogs.com/wangweimutou/p/4367905.html

Visual studio 针对服务配置提供了一个可视化的配置界面(Microsoft Service Configuration Editor),极大的方便开发者进行服务配置,接下来将演示如何对一个WCF服务程序进行配置:

所有与WCF服务有关的文件类,全都引入System.ServiceModel命名空间。

1、新建一个IService类库,在里面编写服务的契约接口IService

IService.cs如下:

using System;using System.ServiceModel;namespace IService
{
[ServiceContract]
public interface IService
{
[OperationContract]
int Add(int a, int b);
}
}

2、新建一个Service类库,实现IService中的服务契约接口

Service.cs代码如下:

using System;

namespace Service
{
public class Service:IService.IService
{
public int Add(int a, int b)
{
return a + b;
}
}
}

3、搭建WCF服务宿主程序,这里使用控制台

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks; namespace Host
{
class Program
{
static void Main(string[] args)
{
using (ServiceHost host = new ServiceHost(typeof(Service.Service)))
{
host.Open();
Console.WriteLine("服务已启动,按任意键中止...");
Console.ReadKey(true);
host.Close();
}
}
}
}

ok,生成整个解决方案,一定要生成,要不然下面的操作无法进行。服务契约和服务类和宿主全部搭建成功,下面开始配置WCF服务

4.通过WCF服务配置编辑器(Microsoft Service Configuration Editor)来配置服务程序,选择visual studio 菜单中的工具选项下的WCF服务配置编辑器,点击即可打开。

(1)、文件->新建配置

(2)、新建服务、选择服务类型,也就是具体要对外发布的服务内容

该服务类型在Service层的bin目录下

(3)、选择对应的服务契约,选择完服务类型后,系统会自动匹配

(4)、选择服务的通信模式

根据程序的通讯模式选择不同的通讯类型,这里采用HTTP

(5)、服务端与客户端的通信模式

i、基本的Web服务互操作性:设置当前程序的通信模式为请求与答复模式,具体请参考WCF系列教程之消息交换模式之请求与答复模式(Request/Reply)

ii、高级Web服务互操作性:分为单工通信和双工通信

这里选择请求与答复模式

(6)、设置服务终结点的地址

当前程序的设置为基地址,所以终结点的地址设置为空。

(7)、向导配置完毕

点击完成,就完成了一个服务配置文件的创建,接下来就开始配置各个节点和属性元素。

(8)、添加基地址

配置服务的基地址,点击左边服务菜单项的主机选项,然后点击右下角的新建按钮添加基地址。

点击新建

此处选用本地Ip地址,端口号为666,ok主机基地址设置完毕,对应host节点中的baseadress节点中的配置

(8)、修改终结点中的binding属性

修改默认终结点的绑定类型为wsHttpBinding,把标识中的DNS设置为Localhost.

(9)、添加元数据终结点配置

添加元数据终结点配置,选择左侧终结点菜单选项,右键选择新建服务终结点。设置Address为mex,Binding 设置为mexHttpBinding,Contract设置为IMetadataExchange

(10)、添加绑定配置

添加绑定配置,选择左侧的绑定菜单项,新建绑定配置

点击确定

(11)、配置终结点行为

配置终结点行为,选择左侧的高级选项的终结点行为配置新建终结点行为配置,将名称设置为endpointBehavior,点击添加按钮添加终结点行为

终结点行为的属性有很多,这里只选择数据序列化大小的选项

默认最大长度为2147483647,这里设置成214748366

(12)、添加服务行为配置

添加服务行为配置,选择左侧服务行为菜单项新建服务行为配置。设置名称为serviceBehavior,点击添加按添加服务行为。

(13)、为当前服务类型绑定服务行为

为服务选择BehaviorConfiguration的选项为serviceBehavior。点击左侧的Service.Service选择,将右侧的BehaviorConfiguration选择设置为serviceBehavior

(14)、为当前服务终结点

为终结点选择绑定配置和行为配置,点击左侧的第一个终结点,将右侧的BehaviorConfiguration设置为endpointBehavior、BindingConfiguration设置为mybinding.

(15)、配置完成,保存至桌面,并将配置内容复制到宿主的App.config文件中。文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="endpointBehavior">
<dataContractSerializer maxItemsInObjectGraph="214748366" />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="serviceBehavior">
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="mybinding" />
</wsHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="serviceBehavior" name="Service.Service">
<endpoint address="" behaviorConfiguration="endpointBehavior"
binding="wsHttpBinding" bindingConfiguration="mybinding" contract="IService.IService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://127.0.0.1:666/WcfConfig/" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
</configuration>

(16)、利用WCF客户端测试服务是否能正常运行。

ok,说明配置成功,服务运行正常!

WCF系列教程之WCF服务配置工具的更多相关文章

  1. WCF系列教程之WCF服务宿主与WCF服务部署

    本文参考自http://www.cnblogs.com/wangweimutou/p/4377062.html,纯属读书笔记,加深记忆. 一.简介 任何一个程序的运行都需要依赖一个确定的进程中,WCF ...

  2. WCF系列教程之WCF服务协定

    本文参考自:http://www.cnblogs.com/wangweimutou/p/4422883.html,纯属读书笔记,加深记忆 一.服务协定简介: 1.WCF所有的服务协定层里面的服务接口, ...

  3. WCF系列教程之WCF服务配置

    文本参考自:http://www.cnblogs.com/wangweimutou/p/4365260.html 简介:WCF作为分布式开发的基础框架,在定义服务以及消费服务的客户端时可以通过配置文件 ...

  4. WCF系列教程之WCF消息交换模式之单项模式

    1.使用WCF单项模式须知 (1).WCF服务端接受客户端的请求,但是不会对客户端进行回复 (2).使用单项模式的服务端接口,不能包含ref或者out类型的参数,至于为什么,请参考C# ref与out ...

  5. WCF系列教程之WCF实例化

    本文参考自http://www.cnblogs.com/wangweimutou/p/4517951.html,纯属读书笔记,加深记忆 一.理解WCF实例化机制 1.WCF实例化,是指对用户定义的服务 ...

  6. WCF系列教程之WCF客户端调用服务

    1.创建WCF客户端应用程序需要执行下列步骤 (1).获取服务终结点的服务协定.绑定以及地址信息 (2).使用该信息创建WCF客户端 (3).调用操作 (4).关闭WCF客户端对象 二.操作实例 1. ...

  7. WCF系列教程之WCF中的会话

    本文参考自http://www.cnblogs.com/wangweimutou/p/4516224.html,纯属读书笔记,加深记忆 一.WCF会话简介 1.在WCF应用程序中,回话将一组消息相互关 ...

  8. WCF系列教程之WCF客户端异常处理

    本文参考自:http://www.cnblogs.com/wangweimutou/p/4414393.html,纯属读书笔记,加深记忆 一.简介 当我们打开WCF基础客户通道,无论是显示打开还是通过 ...

  9. WCF系列教程之WCF操作协定

    一.简介 1.在定义服务协定时,在它的操作方法上都会加上OperationContract特性,此特性属于OperationContractAttribute 类,将OperationContract ...

随机推荐

  1. 最近因为突然喜欢这方面的ui设计,所以搜刮了很多我试过可用性强的界面,又可爱又实用···分享给大家咯

    最近因为突然喜欢这方面的ui设计,所以搜刮了很多我试过可用性强的界面,又可爱又实用···分享给大家咯 1.Side-Menu.Android 分类侧滑菜单,Yalantis 出品. 项目地址:http ...

  2. Hive之FAILED: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient异常

    一.场景 Hive启动不报错,当使用show functions;或create table...时报:FAILED: SemanticException org.apache.hadoop.hive ...

  3. Android WebSocket开发

    一,在模块build.gradle中添加webSocket的依赖包 //WebSocket 依赖包 implementation 'com.neovisionaries:nv-websocket-cl ...

  4. 排序算法之选择排序的思想以及Java实现

    1 基本思想 选择排序的思想是,每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完. 2,算法的实现(Java) package Algorit ...

  5. Java入门(五):控制流程

    在Java中,使用条件语句和循环结构确定控制流程,在本文中,主要包括块作用域.条件语句.循环结构.中断循环这四部分. 一.块作用域 块,也叫复合语句,是指由一对大括号括起来的若干条Java语句.块决定 ...

  6. Spring的AOP基于AspectJ的注解方式开发3

    上上偏博客介绍了@Aspect,@Before 上篇博客介绍了spring的AOP开发的注解通知类型:@Before,@AfterThrowing,@After,@AfterReturning,@Ar ...

  7. linux学习笔记整理(五)

    第六章 Centos7用户管理本节所讲内容:6.1 用户和组的相关配置文件6.2 管理用户和组6.3实战:进入centos7 紧急模式恢复root密码 用户一般来说是指使用计算机的人,计算机对针使用其 ...

  8. Openstack安装Dashboard之后,浏览器无法打开页面 500 Internal Server Error

    在手动部署Openstack时,按照官方文档安装Dashboard,并进行了配置后,发现用浏览器无法打开界面 页面显示: Internal Server Error The server encoun ...

  9. 局域网下Android与scoket通信的实现

    因为最近实验室项目要求实现在局域网下将android app数据发送到winsock中进行保存,所以对此进行了简单学习.pc端因为是另一个同学做的,所以不做说明. 在android端,首先添加权限: ...

  10. vue methods 中方法的相互调用

    vue在同一个组件内:方法之间经常需要互相调用. methods中的一个方法如何调用methods中的另外一个方法呢? 可以在调用的时候使用  this.$options.methods.test2( ...