3

有什么方法可以从 IIS 返回 500.13 错误?我需要测试 500.13 错误的自定义错误页面。

4

5 回答 5

5

我不相信 IIS 包括错误模拟,但是,您可以使用基准测试/压力测试应用程序。唯一的缺点是您实际上必须使您的(测试?)服务器处于实际压力之下,直到 IIS“崩溃”。

首先,您应该将 IIS 应用程序池大小降低到可用的最小值。

IIS - 应用程序池队列长度

我建议你使用Apache 的 JMeter。掌握和使用相对简单。

下载并运行后,以下是执行压力测试的基本步骤:

  1. 添加一个“线程组” ——让一切正常工作的东西 JMeter - 添加线程组

  2. Set Thread Group parameters -这里你设置并发线程的数量(即用户) JMeter - 设置线程组参数

  3. 将 HTTP 请求添加到线程组-这是一个测试步骤。 JMeter - 将 HTTP 请求添加到线程组

  4. 设置 HTTP 请求参数-在此处指定 Web 地址(localhost、www.yourdomain.com 等)以及您需要的任何其他配置 JMeter - 设置 HTTP 请求参数

  5. 添加报告-报告是您查看结果以及服务器请求和响应的方式 JMeter - 添加报告

  6. 运行测试计划并查看结果 JMeter - 运行测试计划并查看结果


最后,在运行测试并查看失败后,您可以在首选浏览器下浏览到您的服务器并实时查看结果。


编辑

如果您可以访问多台计算机/服务器,您甚至可以尝试分布式压力测试。该教程在他们的网站上找到。

于 2013-02-27T16:50:44.760 回答
3

您不能从代码中引发“服务器繁忙”错误。您可以模拟其他答案中显示的错误代码,但它不允许您确定您的自定义错误页面是否将正确显示,因为“服务器忙”错误的全部要点是代码无法执行 - 所以它是非常安全的假设是 IIS 会做一些不同的事情来引发这种错误。

但据我所知,500.13 错误是由 ASP 引发的,而不是 ASP.NET 应用程序。相反,对于 ASP.NET 应用程序,您会看到 503 Service Unavailable 错误。

您可以通过以下方式触发 503 状态代码:

  1. 打开 IIS Management Studio,转到应用程序池,打开应用程序池的高级设置并将队列长度更改为 10(最小值)。
  2. 在您的 ASP.NET 应用程序中添加对Thread.Sleep(50000).
  3. 现在开始攻击 Web 服务器 - 很快你就会收到 503 Service Unavailable 错误。
于 2013-02-27T16:43:43.567 回答
1

把它放在 Page_Init 事件中:

protected void Page_Init(object sender, EventArgs e)
{
    Response.Clear();
    Response.StatusCode = 500;
    Response.SubStatusCode = 13;
    throw new Exception();
}

但是 AFAIK,无法在customErrorsWeb.config 部分设置子代码错误。但是,您可以检查 Global.asx Application_Error 事件中的子代码:

int subCode = HttpContext.Current.Response.SubStatusCode;

如果您遵循逻辑,则可以模拟任何 IIS 错误。

于 2013-02-26T15:39:47.837 回答
1

您可以使用框架来模拟负载。Selenium Grid可能会有所帮助。

Visual Studio Team System 也可以模拟负载,但它不是免费的。
看看使用 Visual Studio Team System 进行负载测试

于 2013-02-27T05:32:29.530 回答
0

这是 StackOverflow 上的类似问题。这与您要完成的工作相匹配吗?在 IIS/.net 中伪造 Http 状态码以进行测试

于 2013-02-28T03:11:29.417 回答