Asp.net 在IIS/.net中伪造Http子状态代码进行测试

Asp.net 在IIS/.net中伪造Http子状态代码进行测试,asp.net,iis,http-status-codes,Asp.net,Iis,Http Status Codes,这与我提出的问题紧密相连 这个问题/答案对于测试asp.net错误非常有效,例如Direct for 500、404、502等错误,但是当我尝试测试错误时,例如500.13-Web服务器太忙,或者502.2-坏网关,我不知道如何做 我认为asp.net生成/处理的错误与IIS处理子状态代码(如500.13等)的错误有明显区别 有人知道如何测试这些吗?我在web.config中找到了处理这些子状态错误的方法,您可以通过以下方式进行处理: <httpErrors errorMode="Cust

这与我提出的问题紧密相连

这个问题/答案对于测试asp.net错误非常有效,例如Direct for 500、404、502等错误,但是当我尝试测试错误时,例如500.13-Web服务器太忙,或者502.2-坏网关,我不知道如何做

我认为asp.net生成/处理的错误与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中指定的正确页面

谢谢


Dan

最简单的方法是在你的应用程序中创建一个页面,返回

页面加载 //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截获,因为此时在生命周期中已经太晚了