微软产品自带一个“默认安全”方案。这也包括了WCF,意味着WCF中的多种配置可以设置来阻止诸如DOS(拒绝服务访问)攻击。微软为很多基于一个单一计算机的开发环境选择这样的设置。这也意味着默认设置中的一部分可能需要在生产环境中更改后才能使用。

需要更改的默认设置之一是那些由ServiceThrottlingBehavior行为设置的配置。这个行为通过在服务端设置配额限制来限制资源使用数量。这个行为有三个设置: MaxConcurrentCalls, MaxConcurrentInstance 和 MaxConcurrentSessions. 表A.1 列出了ServiceThrottlingBehavior行为属性以及它们的默认值。

设置 描述 默认值
MaxConcurrentCalls 限制将要处理的同时调用总数。 16
MaxConcurrentSessions 限制连接到一个服务的并发会话最大数量。 10
MaxConcurrentInstances 限制一个服务并发实例的最大数量。 Int32.MaxValue

MaxConcurrentCalls 和 MaxConcurrentSessions 都有可以在一个生产环境中潜在地限制吞吐量的默认值。如果你的服务需要接受更多吞吐而且你的服务有额外的资源去处理额外的负载的话那么你可以改这些设置。仅需要注意这些设置潜在的影响是可能导致拒绝服务访问攻击。列表A.4 显示了如何通过配置文件改这些设置。

列表A.4 在配置文件中改ServiceThrottling

<system.serviceModel>
  <behaviors>
    <serviceBehaviors>
      <behavior name="ServiceThrottlingBehavior">
        <serviceThrottling maxConcurrentCalls="1000"
                                   maxConcurrentSessions="1000"
                                   maxConcurrentInstances="1000" />
      </behavior>
    </serviceBehaviors>
  </behaviors>
</system.serviceModel>

列表A.5 显示了如何使用代码来更改这些设置。

列表4.5 使用代码改ServiceThrottling

public void IncreaseThrottle(ServiceHost serviceHost)
{
    ServiceThrottlingBehavior throttleBehavior =
        serviceHost.Description.Behaviors.Find<ServiceThrottlingBehavior>();
    if (throttleBehavior == null)
    {
        throttleBehavior = new ServiceThrottlingBehavior();
        serviceHost.Description.Behaviors.Add(throttleBehavior);
    }
    throttleBehavior.MaxConcurrentCalls = 4000;
    throttleBehavior.MaxConcurrentInstances = 4000;
    throttleBehavior.MaxConcurrentSessions = 4000;
}
 

【WCF】WCF 附录 高级主题 配置服务配额设置的更多相关文章

  1. mysql 5.6.20的安装、配置服务、设置编码格式

    一.安装 安装环境        系统:Window 32        版本:Mysql 5.6.20 1. 首先从官网上http://dev.mysql.com/downloads/mysql/ ...

  2. WCF 配置服务 (02)

    配置服务概述 • 在设计和实现服务协定后,即可配置服务. 在其中可以定义和自定义如何向客户端公开服务,包括指定可以找到服务的地址.服务用于发送和接收消息的传输和消息编码,以及服务需要的安全类型. • ...

  3. WCF学习心得------(三)配置服务

    配置服务 配置服务概述 在设计和实现服务协定后,便可以进行服务的配置.在其中可以定义和自定义如何向客户段公开服务,包括指定可以找到服务的地址,服务用于发送和接受消息的传输和消息编码,以及服务需要的安全 ...

  4. WCF基础之配置服务

    在WCF应用编程中配置服务是其主要部分. 配置可以定义和自定义如何向客户端公开服务,包括服务地址,发送和接受消息的传输和编码,以及服务的安全类型. 服务的配置有两种:编码和使用config文件,大多数 ...

  5. WCF学习笔记——配置服务引用

    WCF传过来的东西要序列化. 比如,在WCF服务中,象这么个方法 public IEnumerable<UserItem> GetUserList() 默认情况下,在客户端会调用,是这样: ...

  6. 将WCF寄宿在托管的Windows服务中

    在我之前的一篇博客中我介绍了如何发布WCF服务并将该服务寄宿于IIS上,今天我再来介绍一种方式,就是将WCF服务寄宿在Windows服务中,这样做有什么好处呢?当然可以省去部署IIS等一系列的问题,能 ...

  7. WCF之Windows宿主(可安装成服务自动并启动)

    WCF之Windows宿主(可安装成服务自动并启动) 创建解决方案WCFServiceDemo 创建WCF服务库(类库或WCF服务库)WCFService  ,添加引用System.ServiceMo ...

  8. WCF学习之旅—实现REST服务(二十二)

    一.什么是REST 表述性状态转移(Representational State Transfer,REST),不是一种标准,而是一种软件架构风格. 基于REST的服务与基于SOAP的服务相比,性能. ...

  9. WCF学习心得----(四)服务承载

    WCF学习心得----(四)服务承载 这一章节花费了好长的时间才整理个大概,主要原因是初次接触这个东西,在做练习实践的过程中,遇到了很多的问题,有些问题到目前还没有得以解决.所以在这一章节中,有一个承 ...

随机推荐

  1. golang 并发执行函数func类型slice

    golang的slice支持func.使用func slice要注意func要完整描述入参出参. 如果需要执行一系列类型相同(入参出参格式相同)的函数,可以动态添加到一个slice里面.range s ...

  2. MongoDB入门---文档操作之增删改

    之前的两篇文章,已经分享过关于MongoDB的集合还有数据库的各种操作,接下来就涉及到最主要的喽,那就是数据方面的操作,在这里叫做文档操作.话不多说,大家来看正文.     首先来看一下它的数据结构: ...

  3. java 程序文本文档形式的编写,编译,及运行

    一.程序的编写 1.在指定路径下新建文本文档 如在f盘新建了一个名为demo的文件夹,在该文件夹路径下新建了一个文本文档 2.打开文本文档,进行编写,例如: 3.保存 选择文件另存为,文件名称为你创建 ...

  4. BZOJ1066_蜥蜴_KEY

    题目传送门 经过长时间的旅行,很长时间没写过博客了,这次把上次WA的题目过了. 由于每次蜥蜴从石柱上跳下时,石柱的高度会-1,可以看做占了一格的流量. 建图: 1.建超级源和超级汇,设超级源连到每只蜥 ...

  5. 「日常训练」Brackets in Implications(Codeforces Round 306 Div.2 E)

    题意与分析 稍微复杂一些的思维题.反正这场全是思维题,就一道暴力水题(B).题解直接去看官方的,很详尽. 代码 #include <bits/stdc++.h> #define MP ma ...

  6. 简单的switch嵌套

    //添加list数据 1 public static void main(String[] args) { List<String> al = new ArrayList<Strin ...

  7. 【progress】 进度条组件说明

    progress 进度条组件 原型: <progress percent="[Float(0-100)]" show-info="[Boolean]" b ...

  8. 爬虫1.5-ajax数据爬取

    目录 爬虫-ajax数据爬取 1. ajax数据 2. selenium+chromedriver知识准备 3. selenium+chromedriver实战拉勾网爬虫代码 爬虫-ajax数据爬取 ...

  9. 【shell 练习3】用户管理脚本(一)

    一.创建十个用户,密码为八位 [root@localhost ~]# cat UserManger02.sh #!/bin/bash . /etc/init.d/functions [ $UID -n ...

  10. 1.EOS源码编译运行

    目前网络上都是针对老版EOS2.0源码编译的文章,我在mac上参考这些文章编译,最后发现根本就不对,最新版本只需一条命令(./eosio_build.sh,依赖库会自动安装的)即可.我根据这些文章手动 ...