2009-09-06 110 views
4

WCF对它有很多限制,以防止DoS攻击和其他开发人员的无脑操作。这些限制是什么?他们如何被重写?WCF的内部限制是什么WCF

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

PS:这个问题是我的previous question短得多的版本,没有得到多少关注。

编辑 我已经回答了original question。问题是我的异步调用正在变成同步调用。

+1

看着你以前的问题,我想你可能会跳到结论。将其简化为一个简单的例子,并查看行为是否重现。 _然后_调查限制。你假设你所看到的行为是一个限制问题,而且可能不是。 – 2009-09-06 23:10:27

+0

完全同意,但是我的公司不会对生产微不足道的/确定性版本的时间感到高兴。调整配置选项非常简单!我怀疑我很快就会启用跟踪。 – ligos 2009-09-07 00:00:48

回答

4

有太多的变数可能会涉及到,我觉得这个问题太笼统了,无法回答。你可能想看看一些事情是:

的数量,但因为安全是一个非常复杂的话题和重要的是要正确的(它只是和最薄弱的环节一样强大),WCF有很多不同的选项,配置属性等等......得到一些书籍并真正得到intrac的支持是很明智的IES。

我个人可以推荐Programming WCF 2nd editionLearning WCF: A hands-on guide


读你刚才的问题我也建议你给跟踪一试之后。 WCF记录了很多内部发生的事情,以及何时发生了某些限制。有关如何配置它的更多信息,请参见http://msdn.microsoft.com/en-us/library/ms733025.aspx。特别注意关于XmlWriterTraceListener如何不是线程安全的部分,并且可能会阻止执行流程,并严重影响性能(而不是您在调试性能时需要的)以及如何克服此问题。

最后,我想约翰桑德斯他的建议是非常有效的,如果你确实从一个简单的例子开始,并没有遇到这个问题,那么我建议你以小增量重新添加你当前的功能(或者二进制排序类型时尚),看看是什么导致了这个问题。

+0

对不起(故意)模糊的问题。我确保我已经首先查看了所有配置选项。我怀疑我很快就会启用跟踪。 – ligos 2009-09-07 00:05:05

0

这是我被困住的一个人,花了几个小时弄清楚。当您将IIS作为Web服务器时,会有ASP.net设置,这会限制最大请求大小。因此,wcf服务将无法接受超过此大小的请求。在web.config中,你需要(默认为32兆)添加/修改下面的设置 -

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

当然,你要认识到可能DOS的问题,同时增加此限制。