Arhn - архитектура программирования

Как создать динамическую пользовательскую страницу ошибок в зависимости от кода состояния?

Я пытаюсь создать динамическую пользовательскую страницу ошибки веб-формы, содержимое которой изменяется в соответствии с кодом состояния. Я настроил httpErrors в web.config следующим образом:

<httpErrors errorMode="Custom" defaultPath="\errorpages\ErrorPage.aspx" defaultResponseMode="ExecuteURL" existingResponse="Auto" allowAbsolutePathsWhenDelegated="true" >
      <remove statusCode="503" subStatusCode="-1" />
      <remove statusCode="500" subStatusCode="-1" />
      <remove statusCode="401" subStatusCode="-1" />
      <remove statusCode="404" subStatusCode="-1" />
      <error statusCode="503" responseMode="ExecuteURL" path="/errorpages/ErrorPage.aspx" />
      <error statusCode="500" responseMode="ExecuteURL" path="/errorpages/ErrorPage.aspx" />
      <error statusCode="401" responseMode="ExecuteURL" path="/errorpages/ErrorPage.aspx" />
      <error statusCode="404" responseMode="ExecuteURL" path="/errorpages/ErrorPage.aspx" />
    </httpErrors>

ВОПРОС. Как я могу получить код состояния в коде позади файла до того, как страница отобразится, чтобы она изменяла содержимое в зависимости от кода состояния?

Я хочу иметь 1 файл для всех ошибок, а не 4 разных файла.

Я пытался использовать Server.GetLastError(), но он всегда нулевой, независимо от того, помещал ли я его в метод Global.asax Page_Error (отправитель объекта, EventArgs e) или код в файле.

16.10.2020

  • path="/errorpages/ErrorPage.aspx?error=404" и обрабатывать строку запроса на странице ошибки и отображать содержимое на основе этого. 16.10.2020
  • Интересно, зачем усложнять жизнь 16.10.2020
  • @VDWWD Огромное спасибо, так работает. 16.10.2020
  • @VDWWD, почему бы не поместить свой комментарий в ответ, чтобы Alux мог его принять, Alux и вы зарабатывали баллы, а другие с такой же проблемой тоже могли получить пользу? взаимовыгодный 16.10.2020
  • @Роланд. Хорошая идея. 16.10.2020

Ответы:


1

Вы можете добавить QueryString с кодом состояния и обработать его на странице ошибки, чтобы отобразить правильное содержимое. Итак, сначала добавьте код как Querystring

<error statusCode="404" path="/errorpages/ErrorPage.aspx?code=404" />

Затем на странице ErrorPage.aspx вы можете сделать что-то вроде этого

<%@ Page Language="C#" %>

<script runat="server">

    int error = 0;
    string errorname = "";

    protected void Page_Load(object sender, EventArgs e)
    {
        //check if there is a code
        if (Request.QueryString["code"] != null)
        {
            //is the code a correct number
            int.TryParse(Request.QueryString["code"], out error);
        }

        if (error == 403)
        {
            errorname = error + " Forbidden";
        }
        else if (error == 404)
        {
            errorname = error + " Not Found";
        }
        else if (error == 500)
        {
            errorname = error + " Server Error";
        }
        else
        {
            errorname = "Unhandled Error";
            error = 500;
        }
    }

</script>

<html>
<head>
    <title>MySiteName - <%= errorname %></title>
</head>
<body>
    <center>
        <a href="/">
            <img src="/images/<%= error %>.png" border="0" vspace="50">
        </a>
    </center>
</body>
</html>
16.10.2020
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..