【问题标题】:How long do I need to wait before sending additional requests to IIS在向 IIS 发送其他请求之前,我需要等待多长时间
【发布时间】:2011-11-10 20:17:25
【问题描述】:

我有一个专门为调用服务的请求响应时间而编写的控制台应用程序。这更多是为了实验,但我们还是想比较各种做事方式的响应时间。

应用可以发出两个请求,但后续请求超时。响应时间一般小于 100 毫秒。我怀疑请求被触发得太快并且 IIS 正在节流,因为它认为这是 DOS 攻击(猜测)。停止控制台应用并重新启动就足以允许额外的两个请求。

服务器是另一台机器(不在我的机器上运行)但在我们的防火墙内。

基本上,下面的代码在 FOR 循环中运行:

        long start = DateTime.Now.Ticks;

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL1);

        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

        long end = DateTime.Now.Ticks;

        long duration = end - start;

        Console.WriteLine("duration: " + duration);

如果这是 IIS 中内置的一些保护,我怎样才能发出一堆请求并准确分析响应时间?或者,如何在 IIS 中暂时禁用此功能(但可能不建议这样做)?

【问题讨论】:

    标签: iis


    【解决方案1】:

    我很好奇,所以我把你的代码带入了 Visual Studio,果然 - 你是对的。当我在本地(在另一个 Visual Studio 实例中)连接到 IIS Express 时它运行良好,但当我尝试连接到运行 IIS 7.5 的真实远程服务器时它却无法运行。

    然而,看起来不太对劲的是,我可以执行控制台应用程序,在 2 个请求后看到它超时,快速关闭它并重新运行它,它会给我另外 2 个请求。这让我认为这不是服务器问题,而是 .NET 中的问题。如果它实际上是一种 DOS 预防技术,你会认为它会超时一段固定的时间。

    所以我尝试使用我过去使用过的第 3 方 HTTP 组件,特别是在这种情况下为 Chilkat,它按预期工作。我能够向远程服务器发送重复的请求。我不能确切地说是什么导致了问题,但修复可能就像不使用内置的 HttpWebRequest 对象一样简单。

    【讨论】:

      猜你喜欢
      • 2010-12-02
      • 2015-01-29
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      • 2021-12-22
      • 2016-05-27
      相关资源
      最近更新 更多