2017-02-14 8 views
2

В классическом ASP, я знаю, что это возможно, чтобы вернуть заголовок HTTP Error, указав .status свойства, как это:Как отправить код ошибки HTTP в классическом ASP с HTTP-подтатусом?

Response.Status = "404 File Not Found" 

Но как я могу вернуть более конкретный код ошибки с a substatus, например 404,9 или 500,100?

мне нужно сделать, что для целей тестирования (как я знаю, что код Подстатуса обычно добавляется сервер динамически)

+0

Вы пробовали 'Response.Status =" 404.9 Скрытый атрибут файла ''? – Lankymart

+0

Судя по [документации] (https://msdn.microsoft.com/en-us/library/ms525844 (v = vs.90) .aspx), он ожидает только * трехзначное число, которое указывает код состояния «*, но мой совет будет попробовать и посмотреть. – Lankymart

+0

@ Lankymart, Да, я протестировал его, но он не работает. Единственный способ «сгенерировать» ошибку - это попытаться вызвать файл test.yyy, расположенный на веб-сайте. Поскольку расширение файла .yyy не является частью MIMMAP IIS, статический обработчик файла не будет обслуживать его, а затем возвращает ошибку 404.3. Таким образом, я могу проверить свои страницы ошибок. – AlexLaforge

ответ

0

Итак: Кажется, что можно генерировать «трехзначные» HTTP-ошибки из классического ASP-кода.

Таким образом, единственный способ проверить, работают ли ваши пользовательские веб-страницы, - это вызывать файл test.yyy, расположенный на веб-сайте.

Поскольку расширение файла .yyy не является частью MIMMAP IIS, статический обработчик файла не будет обслуживать его, а затем возвращает ошибку 404.3. Таким образом, я могу проверить свои страницы ошибок. Этот пример взят из этой статьи: Microsoft https://www.iis.net/learn/troubleshoot/diagnosing-http-errors/how-to-use-http-detailed-errors-in-iis

Так что для всех нуждающихся, чтобы установить очень подробные сообщения об ошибках в том числе HTTP субкодов под IIS 7/8, вот «web.config» содержимое файла для вашего сайта: (этот файл содержит только несколько записей, но вы, очевидно, можно добавить записи для каждого HTTP код/​​комбинации субкода требуется Microsoft обеспечивает 56 страниц ошибок в C:. \ Inetpub \ custerr)

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <httpErrors errorMode="Custom"> 
      <remove statusCode="404" subStatusCode="-1" /> 
      <error statusCode="404" subStatusCode="5" prefixLanguageFilePath="" path="E:\inetpub\vhosts\yourdomain.com\error_docs\404-5.html" /> 
      <error statusCode="404" subStatusCode="4" prefixLanguageFilePath="" path="E:\inetpub\vhosts\yourdomain.com\error_docs\404-4.html" /> 
      <error statusCode="404" subStatusCode="3" prefixLanguageFilePath="" path="E:\inetpub\vhosts\yourdomain.com\error_docs\404-3.html" /> 
      <error statusCode="404" subStatusCode="2" prefixLanguageFilePath="" path="E:\inetpub\vhosts\yourdomain.com\error_docs\404-2.html" /> 
      <error statusCode="404" subStatusCode="1" prefixLanguageFilePath="" path="E:\inetpub\vhosts\yourdomain.com\error_docs\404-1.html" /> 
      <error statusCode="404" subStatusCode="0" prefixLanguageFilePath="" path="E:\inetpub\vhosts\yourdomain.com\error_docs\404-0.html" /> 
     </httpErrors> 
    </system.webServer> 
</configuration> 

Я надеюсь, что это помогу ! :)

0

IIS не будет регистрировать пользовательский субкод в журналах трафика.

Не проверяйте субкод. Тестирование свойства statusText, возвращаемого пользовательской ошибкой.

+0

IIS DOES регистрирует субкод (вам просто нужно щелкнуть значок «IIS> ASP> Logging», чтобы включить это поле в файл журнала. Если ваш сервер попал в «500.0», вы увидите 500 0 в конце line. Если ваш сервер попал в «500.19», вы увидите 500 19 в конце строки. – AlexLaforge

+0

Я сконфигурировал тестовую страницу для возврата «404.19 неправильных дроидов» и увидел «404 0» в моих журналах. в основе моего ответа. Мой ответ также был основан на том, как я полагал, что вы тестировали - используя какой-то компонент ServerXMLHTTP или AJAX-запрос. –

+0

Хорошо, я лучше понимаю ваш ответ! Вы сделали «предположения» по тому, как я тестировал это ... что ... ну ... ах .. не были точными;) Я протестировал так же, как вы это сделали: с помощью простой тестовой страницы .asp. И тот факт, что ваши журналы отображают 404.0 показывают, что IIS удалил субкод, отправленный кодом ASP, тем самым подтвердив тот факт, что Classic ASP может генерировать только трехзначные ошибки. Спасибо ! ;) – AlexLaforge

Смежные вопросы