过滤规则无法删除机器人

时间:2017-10-02 22:00:20

标签: c# visual-studio memory-leaks web-config bots

我的网站上的内存使用情况会导致我的Windows服务器每10分钟回收一次。内存通常是140mb,但突然间它跳到600mb或更多,网站需要重新编写。我在web.config文件中有以下条目,以阻止机器人攻击我的网站。但是,我收到filteringRules行的语法错误,虽然我的网站运行正常,更新的web.config文件。我注意到一些机器人仍然出现在我的http日志中,我想知道我的过滤器是否正常工作。有没有人看到这个代码有问题,或者它是否真的工作,尽管我在Visual Studio中遇到语法错误?此外,所有这些机器人都会导致内存峰值吗?

<requestFiltering>    
   <filteringRules>    !-- this line gives me a syntax error
    <filteringRule name="BlockSearchEngines" scanUrl="false" 
      scanQueryString="false">
        <scanHeaders>
            <clear />
            <add requestHeader="User-Agent" />
        </scanHeaders>
        <appliesTo>
            <clear />
        </appliesTo>
        <denyStrings>
            <clear />
            <add string="AhrefsBot" />
            <add string="MJ12bot" />
            <add string="ExtLinksfBot" />
            <add string="Yeti" />
            <add string="YandexBot" />
            <add string="SemrushBot" />
            <add string="DotBot" />
            <add string="istellabot" />
            <add string="Qwantify" />
            <add string="GrapeshotCrawler" />
            <add string="archive.org_bot" />
            <add string="Applebot" />
            <add string="ias_crawler" />
            <add string="Uipbot" />
            <add string="Cliqzbot" />
            <add string="TinEye-bot" />
            <add string="YandexImages" />

        </denyStrings>
    </filteringRule>
</filteringRules>

1 个答案:

答案 0 :(得分:0)

您的<filteringRules>条目的语法看起来正确(结束标记错字除外)。

由于某些原因,Visual Studio使用的web.config架构似乎未包含filteringRules。但是,该架构独立于IIS知道和执行的操作,因此没有关系。

  

而且,所有这些漫游器都会导致内存峰值吗?

仅仅因为来自机器人的请求不会占用大量内存。意外的内存高峰通常是应用程序错误-内存泄漏等。您可以使用内存分析器查看应用程序的内存使用情况。常见的原因是分配内存缓冲区,然后将对它们的引用存储在全局变量/集合中。未能对所有一次性对象调用Dispose()是另一个潜在的泄漏源。