代码之家  ›  专栏  ›  技术社区  ›  ligos

WCF的内部限制是什么

  •  4
  • ligos  · 技术社区  · 15 年前

    WCF对它施加了许多限制,以防止DoS攻击和其他开发人员的愚蠢行为。这些限制是什么?怎样才能凌驾于不顾呢?

    具体来说,如果我试图在短时间内向各种不同的客户机发送大量消息,那么内部WCF限制是什么?它们可能导致消息发送缓慢。

    PS:这个问题是我的 previous question 这并没有引起太多关注。

    编辑 我已经回答了 original question . 问题是我的异步调用被转换成了同步调用。

    2 回复  |  直到 10 年前
        1
  •  4
  •   olle    15 年前

    可能涉及的变量太多,我觉得这个问题太笼统,无法回答。您可能需要检查的一些内容包括:

    但是,由于安全性是一个非常复杂的主题,需要正确处理(它只有最弱的链接那么强),并且WCF有很多不同的选项、配置属性等。买几本书,真的会被这些棘手的问题弄得头晕目眩。

    我可以亲自推荐 Programming WCF 2nd edition Learning WCF: A hands-on guide


    在阅读了你之前的问题之后,我还建议你试一试。WCF记录了很多关于内部发生的事情以及什么时候达到了某些限制。参见 http://msdn.microsoft.com/en-us/library/ms733025.aspx 有关如何配置它的详细信息。请特别注意以下部分:xmlWriterTraceListener如何不是线程安全的,可能会阻塞执行流,这严重影响性能(在调试性能时不是您想要的),以及如何克服这一点。

    最后,我认为JohnSaunders的建议是非常有效的,如果你从一个简单的例子开始,并且没有遇到这个问题,那么我建议你以小的增量(或者以二进制的方式)重新添加你当前的功能,看看是什么导致了这个问题。

        2
  •  0
  •   Yogi Valani StaxMan    10 年前

    这是我被难住了,花了好几个小时才弄明白的。将IIS作为Web服务器时,存在限制最大请求大小的ASP.NET设置。因此,WCF服务将无法接受超过该大小的请求。在web.config中,您需要在设置(默认为32兆)以下添加/更改-

    <system.web>
       <httpRuntime maxRequestLength="32767"/>
    </system.web>
    

    当然,在增加这个限制的同时,您必须认识到可能的DoS问题。