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

发布于 2024-12-08 23:46:10 字数 566 浏览 3 评论 0原文

这是一个很奇怪的问题,但我正在尝试测试 Web.Config 设置是否存在自定义错误,例如:

  <customErrors mode="On"/>
    <error statusCode="500" redirect="500.html"/>  
    <error statusCode="500.13" redirect="500.13.html"/>        
  </customErrors>

我是否可以在 global.asax Application_BeginRequest 方法中创建页面或拦截请求可以伪造响应发送到浏览器,即设置 500.13 HTTP 错误状态,告诉 IIS 使用 Web.Config 中定义的 500.13.html 页面。

理想情况下,我想做一些事情,比如创建一个页面,该页面采用我想要返回的状态代码的查询字符串值,例如 FakeRequest.html?errorStatus=500.13 ,以便我们的测试人员可以确保适当的针对各种错误返回页面。

This is quite an odd question, but I am trying to test the Web.Config settings for custom errors e.g.:

  <customErrors mode="On"/>
    <error statusCode="500" redirect="500.html"/>  
    <error statusCode="500.13" redirect="500.13.html"/>        
  </customErrors>

Is there anyway I can create a page or intercept the request in the global.asax Application_BeginRequest method that can fake up a response to send to the browser i.e. setup a 500.13 HTTP error status which tells IIS to use the 500.13.html page defined in the Web.Config.

Ideally, I'd like to do something like create a page that takes a query string value of the status code I want returned e.g. FakeRequest.html?errorStatus=500.13 so that our testers can make sure the appropriate page is returned for the various errors.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

紫﹏色ふ单纯 2024-12-15 23:46:10

尝试类似的操作:

    protected void Page_Load(object sender, EventArgs e)
    {
        var rawErorStatus = HttpContext.Current.Request.QueryString.Get("errorStatus");

        int errorStatus;
        if (int.TryParse(rawErorStatus, out errorStatus))
        {
            throw new HttpException(errorStatus, "Error");
        }
    }

在以下页面找到此内容: http://aspnetresources.com/articles/CustomErrorPages

Try something like:

    protected void Page_Load(object sender, EventArgs e)
    {
        var rawErorStatus = HttpContext.Current.Request.QueryString.Get("errorStatus");

        int errorStatus;
        if (int.TryParse(rawErorStatus, out errorStatus))
        {
            throw new HttpException(errorStatus, "Error");
        }
    }

Found this at the following page: http://aspnetresources.com/articles/CustomErrorPages

救赎№ 2024-12-15 23:46:10

这并不适用于所有人,但你可以充实它...缓存设置很重要,否则他们尝试的最后一个代码可能会被浏览器等缓存。

创建一个基本页面,例如“FakeError.aspx”:

<html xmlns="http://www.w3.org/1999/xhtml" >
<script runat="server" language="c#">

  protected void Page_Load(object sender, EventArgs e)
  {
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.StatusCode = Convert.ToInt32(Request.QueryString["code"]);
    Response.End();
  }

</script>
</html>

然后点击它...

就像我说的,并非所有方法都能奏效,但看看你进展如何。

有关状态代码,请参阅 http://msdn.microsoft.com /en-us/library/aa383887(VS.85).aspx

This won't work for all but you can flesh it out... The cache setting is important otherwise the last code they try could be cached by the browser etc.

Create a basic page, e.g. "FakeError.aspx":

<html xmlns="http://www.w3.org/1999/xhtml" >
<script runat="server" language="c#">

  protected void Page_Load(object sender, EventArgs e)
  {
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.StatusCode = Convert.ToInt32(Request.QueryString["code"]);
    Response.End();
  }

</script>
</html>

Then hit it...

Like I said, not all will work but see how you go.

For status codes, see http://msdn.microsoft.com/en-us/library/aa383887(VS.85).aspx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文