【问题标题】:Faking Http Sub Status Codes in IIS/.net for testing在 IIS/.net 中伪造 Http Sub 状态码以进行测试
【发布时间】:2013-09-30 12:20:56
【问题描述】:

现在这与我提出的问题和answered yesterday 紧密相关。

此问题/答案非常适合测试 asp.net 错误(例如直接用于 500、404、502 等错误),但是当我尝试测试错误时,例如 500.13 - Web 服务器太忙或 502.2 - 坏网关,我不知道该怎么做。

我认为由 asp.net 生成/处理的错误与由 IIS 生成/处理的错误之间存在明显区别(IIS 处理诸如 500.13 等子状态代码)。

有人对如何测试这些有任何想法吗?我发现可以通过以下方式在 web.config 中处理这些子状态错误:

<httpErrors errorMode="Custom" existingResponse="Replace">
  <clear/>
  <error statusCode="404" path="/errorPages/404.html" responseMode="Redirect"/>
  <error statusCode="500" path="/errorPages/500.html" responseMode="Redirect"/>
  <error statusCode="500" subStatusCode="13" path="/errorPages/500.13.html" responseMode="Redirect"/>
  <error statusCode="502" subStatusCode="2" path="/errorPages/502.2.html" responseMode="Redirect"/>
</httpErrors>

回顾一下,我只是希望能够在 .net 中模拟/复制子状态错误,例如 500.13 或 502.2,以便我可以测试 IIS 返回我在 web.config 中指定的正确页面。

谢谢

【问题讨论】:

    标签: asp.net iis http-status-codes


    【解决方案1】:

    最简单的方法是在您的应用中创建一个返回status code you want 的页面。

    Page_Load // HttpContext.Current.Response

    Response.Clear();
    if(Request.QueryString["code"] == null)
       Response.StatusCode = someDefault;
    else
       Response.StatusCode = int.Parse(Request.QueryString["code"]);
    

    您可以接收查询字符串参数,以便更容易自动化。

    【讨论】:

    • 嗨,大卫,感谢您的回答,但这不是我要找的。如问题中所述,我希望 IIS 拦截/处理请求并使用 web.config 中定义的正确页面进行响应。更改 Response.StatusCode 只会更改响应标头代码并且不会被 IIS 拦截,因为到那时它在生命周期中为时已晚
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    相关资源
    最近更新 更多