Объект ASPError не содержит никаких данных на моей пользовательской странице ошибки - PullRequest
6 голосов
/ 09 ноября 2010

У меня есть следующее в моем web.config

<httpErrors errorMode="Custom">
    <remove statusCode="500" subStatusCode="-1" />
    <error statusCode="500" prefixLanguageFilePath="" path="/error.asp" responseMode="ExecuteURL" />
</httpErrors>

Обработка ошибок работает в том, что, когда возникает ошибка 500, я вместо этого отправляюсь на мой error.aspстраницы ошибки по умолчанию 500.

Проблема в том, что ни одно из свойств объекта ASPError, возвращаемого Server.GetLastError, не задано.

Например, в приведенном ниже кодеОписание ошибки:

dim oErr : set oErr = Server.GetLastError

Response.Write "Error Description:  " & oErr.Description& "<br />"

Обновление

Исходя из темы, на которую Джоэл ссылался в комментариях, я обновил свой web.config следующим образом:

<httpErrors errorMode="Custom">
    <remove statusCode="500" subStatusCode="100" />
    <error statusCode="500" subStatusCode="100" prefixLanguageFilePath="" path="/error.asp" responseMode="ExecuteURL" />
</httpErrors>

Это дает данные в объекте ASPError, возвращаемом GetLastError.

. Теперь проблема в том, что я получаю HTML-код с начала страницы, гдегенерируется ошибка, тогда остальная часть страницы представляет собой HTML-код error.asp.

. Мне бы очень хотелось, чтобы он вместо этого перенаправлял на error.asp, но изменение web.config на responseMode="Redirect" непохоже на работу.

Ответы [ 2 ]

5 голосов
/ 09 ноября 2010

Вот решение, которое работает для меня.

Настройте web.config следующим образом:

<httpErrors errorMode="Custom">
    <remove statusCode="500" subStatusCode="100" />
    <error statusCode="500" subStatusCode="100" prefixLanguageFilePath="" path="/error.asp" responseMode="ExecuteURL" />
</httpErrors>

Простой error.asp может выглядеть так:

<%@ Language=VBScript %>
<% 
    Option Explicit
    On Error Resume Next
    Response.Clear
    Dim objError, MessageBody
    Set objError = Server.GetLastError()

    Response.Write objError.ASPCode & "<br />"
    Response.Write objError.Number & "<br />"
    Response.Write objError.Description & "<br />"
%>

Ключом к моим проблемам, похоже, является наличие On Error Resume Next и Response.Clear.

Я нашел решение в Создание пользовательскихСтраницы с ошибками ASP Статья Microsoft KB (Q224070).

0 голосов
/ 12 июня 2013

Проблема теперь в том, что я получаю HTML-код в начале страницы, где генерируется ошибка, а остальная часть страницы - это HTML-код из error.asp.

Поместите

Response.Clear

на свою страницу ошибки

...