Подделка кодов статуса Http в IIS / .net для тестирования - PullRequest
3 голосов
/ 11 октября 2011

Это довольно странный вопрос, но я пытаюсь проверить настройки Web.Config для пользовательских ошибок, например ::10000

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

Можно ли в любом случае создать страницу или перехватить запрос в методе global.asax Application_BeginRequest, который может подделать ответ для отправки в браузер, т. Е. Настроить статус ошибки HTTP 500.13, который сообщает IIS использовать 500.13.html страница определена в Web.Config.

В идеале я хотел бы сделать что-то вроде создания страницы, которая принимает значение строки запроса кода состояния, которое я хочу вернуть, например, FakeRequest.html?errorStatus=500.13 чтобы наши тестировщики могли убедиться, что соответствующая страница возвращена для различных ошибок.

Ответы [ 2 ]

3 голосов
/ 11 октября 2011

Попробуйте что-то вроде:

    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

0 голосов
/ 11 октября 2011

Это не будет работать для всех, но вы можете уточнить это ... Настройка кэша важна, иначе последний код, который они попробуют, может быть кэширован браузером и т. Д.

Создайте базовую страницу, например"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

...