Подделка Http Sub Status Codes в IIS / .net для тестирования - PullRequest
0 голосов
/ 12 октября 2011

Теперь это тесно связано с вопросом, который я поднял и на который ответил вчера .

Этот вопрос / ответ хорошо подходит для тестирования ошибок asp.net (таких как ошибки 500, 404, 502 и т. Д.), Но когда я пытался проверить ошибки, такие как 500.13 - веб-сервер слишком занят или 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>

Напомним, что я просто хочу иметь возможность смоделировать / воспроизвести ошибку подчиненного статуса, такую ​​как 500.13 или 502.2 в .net, чтобы я мог проверить IIS, возвращает правильную страницу, которую я указал в web.config.

Спасибо

Dan

1 Ответ

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

Самый простой способ - создать страницу в вашем приложении, которая возвращает код состояния , который вы хотите .

Page_Load // HttpContext.Current.Response

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

Можно получить параметр строки запроса, чтобы его было проще автоматизировать.

...