因为有一个小工具需要和其它的业务对接数据,所以就试一下看能不能弄一个无需配置快速对接的方法出来,百(以)度(讹)过(传)后(讹),最后还是对照wcf配置对象调试出来了:

1.创建WebHttpBinding

2.添加ServiceMetadataBehavior

3.获取一个serverendpoint

4.指定WebHttpBehavior格式

         /// <summary>
         /// 快速创建一个WCF http服务
         /// </summary>
         /// <param name="contractType"></param>
         /// <param name="serviceType"></param>
         /// <param name="url"></param>
         /// <param name="timeout"></param>
         /// <param name="bufferSize"></param>
         /// <param name="isDebug"></param>
         /// <returns></returns>
         , bool isDebug = true)
         {
             Uri baseAddress = new Uri(url);

             var serviceHost = new ServiceHost(serviceType, baseAddress);

             //1.创建WebHttpBinding
             var binding = new WebHttpBinding(WebHttpSecurityMode.None);

             binding.Security = new WebHttpSecurity() { Mode = WebHttpSecurityMode.None, Transport = null };

             binding.MaxBufferPoolSize = binding.MaxReceivedMessageSize = bufferSize;

             binding.OpenTimeout = binding.CloseTimeout = binding.SendTimeout = binding.ReceiveTimeout = timeout;

             binding.UseDefaultWebProxy = false;

             binding.ProxyAddress = null;

             var readerQuotas = new System.Xml.XmlDictionaryReaderQuotas();

             readerQuotas.MaxArrayLength = readerQuotas.MaxBytesPerRead = readerQuotas.MaxDepth =
                 readerQuotas.MaxNameTableCharCount = readerQuotas.MaxStringContentLength = (int)bufferSize;

             binding.ReaderQuotas = readerQuotas;

             //2.添加ServiceMetadataBehavior
             if (serviceHost.Description.Behaviors.Find<ServiceMetadataBehavior>() == null)
             {
                 ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();

                 behavior.HttpGetEnabled = true;

                 //behavior.HttpsGetEnabled = false;

                 serviceHost.Description.Behaviors.Add(behavior);
             }

             if (serviceHost.Description.Behaviors.Find<ServiceThrottlingBehavior>() == null)
             {
                 ServiceThrottlingBehavior behavior = new ServiceThrottlingBehavior();

                 behavior.MaxConcurrentCalls = behavior.MaxConcurrentInstances = behavior.MaxConcurrentSessions = (int)bufferSize;

                 serviceHost.Description.Behaviors.Add(behavior);
             }
             //3.获取一个serverendpoint
             var serviceEndpoint = serviceHost.AddServiceEndpoint(contractType, binding, baseAddress);

             //需引用System.ServiceModel.Web.dll
             WebHttpBehavior webHttpBehavior = new WebHttpBehavior()
             {
                 AutomaticFormatSelectionEnabled = false,
                 DefaultBodyStyle = System.ServiceModel.Web.WebMessageBodyStyle.Bare,
                 DefaultOutgoingResponseFormat = System.ServiceModel.Web.WebMessageFormat.Json,
                 DefaultOutgoingRequestFormat = System.ServiceModel.Web.WebMessageFormat.Json,
                 FaultExceptionEnabled = isDebug,
                 HelpEnabled = isDebug
             };

             serviceEndpoint.Behaviors.Add(webHttpBehavior);

             serviceHost.Opened += delegate
             {
                 Console.WriteLine("{0}已启动!", serviceType.Name);
             };

             return serviceHost;
         }

发布一个wcf  rest 服务只需要

  WCFServiceFactory.CreateWebService(, , ),true).Open();

(纯代码)快速创建wcf rest 服务的更多相关文章

  1. 快速创建WCF服务和svcutil.exe工具使用

    先简单的创建WCF服务: 系统会自动加上IService1接口 和 Service1 实现类 分别在IService1 和Service1 加上2段代码. [ServiceContract] publ ...

  2. 通过纯代码方式发布WCF服务

    网络上搜索WCF服务,一般是寄宿在IIS,通过WebConfig方式配服务地址,接口类型等信息,但是对于我这样的懒人,目前项目在开发阶段,实在不愿意每次添加新服务就更新配置文件,于是使用了反射来加载服 ...

  3. c# 纯代码方式创建快捷方式

    using System; using System.Collections.Generic; using System.Text; using Microsoft.Win32; using Syst ...

  4. 两行代码快速创建一个iOS主流UI框架

    本框架适用于 使用 NavigationController+UITabBarController 的APP 框架QLSNavTab , GitHub地址:https://github.com/qia ...

  5. Spring-boot:快速搭建微框架服务

    前言: Spring Boot是为了简化Spring应用的创建.运行.调试.部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置. 简单来说,它提供了一堆依赖打包,并 ...

  6. WCF入门教程(二)如何创建WCF服务

    WCF入门教程(二)从零做起-创建WCF服务 通过最基本的操作看到最简单的WCF如何实现的.这是VS的SDK默认创建的样本 1.创建WCF服务库 2.看其生成结构 1)IService1.cs(协议) ...

  7. WCF入门(五)---创建WCF服务

    使用Microsoft Visual Studio2012创建WCF服务,理解如下所有必要的编码,更好地创建WCF服务的概念,这里做一个简单的任务. 启动Visual Studio 2012. 单击新 ...

  8. WCF入门教程(二)从零做起-创建WCF服务

    通过最基本的操作看到最简单的WCF如何实现的.这是VS的SDK默认创建的样本 1.创建WCF服务库 2.看其生成结构 1)IService1.cs(协议) 定义了协议,具体什么操作,操作的参数和返回值 ...

  9. 一、WCF学习之旅-创建第一个服务

    WCF基本介绍:http://baike.baidu.com/link?url=TGjLYt3HS4dt4-hIiGRknLy6udRsZ52QxJz9cmRKlR4NXbP9rCZDsKn2fDfG ...

随机推荐

  1. 一些代码 I (斐波那契、for...else...、try和return、classmethod、统计个数)

    1. 斐波那契 from itertools import islice def fib(): a, b = 0, 1 while True: yield a a, b = b, a+b print ...

  2. eclipse 点击 open Implementation就退出eclipse

    输入法不对.. 切换到纯英文的输入法. 微软自带的那个..  我电脑上也这样. 现在好了 (安装谷歌输入法貌似存在这个问题)

  3. UNIX时间与本地时间的转换

    所谓UNIX时间,维基百科的解释:UNIX时间,或称POSIX时间是UNIX或类UNIX系统使用的时间表示方式:从协调世界时1970年1月1日0时0分0秒起至现在的总秒数,不包括闰秒 知道了是什么,就 ...

  4. phpStudy环境配置多个站点,绑定域名

    经常做网站的朋友,往往要在自已的电脑同时建立多个站点,而phpstudy这款软件就能很好的解决这个问题,大家看下图 点击上图中的 其它选项菜单 ,就会弹出下面的对话框,然后点击 站点域名管理 然 后在 ...

  5. mysql +keeplive

    下载tar包 ./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6. ...

  6. Python初学者必看(1)

    python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...

  7. 理解TIME_WAIT

    理解TIME_WAIT http://www.firefoxbug.com/index.php/archives/2795/ 理解TIME_WAIT(2) http://www.firefoxbug. ...

  8. [转]用国内软件源为Ubuntu的apt-get提速方法

    FROM : http://www.jb51.net/os/Ubuntu/45293.html 刚装好Ubuntu系统之后根据需要还要安装一系列的软件,最省心的办法就是通过apt-get来进行   默 ...

  9. select 1 与 select null (转)

    1.Select 1 在这里我主要讨论的有以下几个select 语句: table表是一个数据表,假设表的行数为10行,以下同. 1:select  1 from table 2:select cou ...

  10. 51nod 1483 化学变换 | 二进制 暴力

    51nod 1483 化学变换 题面 给出n个整数(n <= 1e5,每个数 <= 1e5),对每个数都可以进行多次操作,操作有两种:乘二/整除以二. 问最少经过多少次操作能使所有数相等. ...