因为有一个小工具需要和其它的业务对接数据,所以就试一下看能不能弄一个无需配置快速对接的方法出来,百(以)度(讹)过(传)后(讹),最后还是对照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>
public static ServiceHost CreateWebService(Type contractType, Type serviceType, string url, TimeSpan timeout, long bufferSize = , 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); //4.指定WebHttpBehavior格式
//需引用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(typeof(ITestContract),typeof(TestService),"http://127.0.0.1:39654/",new TimeSpan(, , ),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. mydumper

    Mydumper介绍 Mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具.开发人员主要来自MySQL,Facebook,SkySQL公司.目前已经在一些线上使用了Mydu ...

  2. Java集合系列[1]----ArrayList源码分析

    本篇分析ArrayList的源码,在分析之前先跟大家谈一谈数组.数组可能是我们最早接触到的数据结构之一,它是在内存中划分出一块连续的地址空间用来进行元素的存储,由于它直接操作内存,所以数组的性能要比集 ...

  3. 由浅入深SCF无服务器云函数实践

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:陈杰,腾讯云架构平台部技术专家 近年来,互联网服务从一开始的物理服务器托管,虚拟机,容器,发展到现在的云函数,逐步无服务器化,如下表所示. ...

  4. flask-日料网站搭建

    引言:想使用python的flask框架搭建一个日料网站,主要包含web架构,静态页面,后台系统,交互. 本节知识:搭建web目录,目前正在copy网站. python环境:python2.7,fla ...

  5. iOS 应用全部添加滑动返回

    if ([self  class] == [HomeViewController class]||[self  class] == [ComprehensivefinanceViewControlle ...

  6. [已解决]pip安装包时报错:Read time out

    有一些包在源在国外,因为某些原因,网络并不是很好,常常会发生Read time out安装失败的问题. 一般解决方法有:修改国内的安装源,如果能够获取只是慢的话,还有中比较懒的方法就是增加读取的时间. ...

  7. Vue入门

    一.引入vue 方法一:下载vue.js,然后像引用jquery一样,在HTML中使用script标签引入 <script src="https://unpkg.com/vue/dis ...

  8. JVM GC知识回顾

    这两天刚好有朋友问到我面试中GC相关问题应该怎么答,作为java面试中热门问题,其实没有什么标准回答.这篇文章结合自己之前的总结,对GC做一个回顾. 1.分代收集 当前主流VM垃圾收集都采用" ...

  9. 复选框之checked属性

    今天无意中看到同事在学习复选框里面的checked属性的应用,当时看了一下,感觉熟悉而又陌生,发现checked属性其实还是挺奇怪的,感觉这里很有必要做一下笔记: 1.html中的checked属性. ...

  10. POJ 3829 Seat taking up is tough(——只是题目很长的模拟)

    题目链接: http://poj.org/problem?id=3829 题意描述: 输入矩阵的大小n和m,以及来占位置的人数k 输入n*m的教室座位矩阵,每个值表示该座位的满意度 输入每个人来占位置 ...