Обработка исключений try catch tutorial 05

asp

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

1. Организовать обработку исключений на уровне страницы

а) Открыть TrailReport.aspx в режиме конструктора. Эта страница должна получать список трасс для горного велосипеда от веб-службы TrailReportWebService. Он также предоставляет отчеты о состоянии трасс и сообщения о погоде на этих трассах.

б) В дереве Обозревателя решений кликнуть правой клавишей на TrailReport.aspx и выберать пункт Перейти к коду.

Страница с разделяемым кодом,  (файл TrailReport.aspx.cs) уже содержит код, который управляет тем, как страница загружается и как отчет о  трассах извлекаются из определенного веб-сервиса.

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

в) В классе  TrailReport добавить защищенный метод, имеющий следующее определение:

  • имя метода: Page_Error
  • тип возвращаемого значения: отсутствует (void)
  • параметр 1: имя — sender тип – object;
  • параметр 2: имя — е тип – EventArgs:

protected void Page_Error (object sender, EventArgs e)

    {

    }

г) Добавить в метод Page_Error код для выполнения следующих действий:

  • Вызвать метод Response.Write, передав ему в качестве параметра следующий текст Произошла следующая ошибка: <br />:

Response.Write(«Произошла следующая ошибка:<br />»);

  • Вызвать метод Response.Write еще раз, передав ему в качестве параметра сообщение, возвращаемое методои Server.GetLastError:

Response.Write(Server.GetLastError().Message);

  • Вызвать метод Response.Write еще раз, передав ему в качестве параметра следующий текст: «<br/><a href=’Default.aspx’> Чтобы продолжить, кликните здесь </a>»:

Response.Write(«<br /><a href=’Default.aspx’> Чтобы продолжить, кликните здесь </a>»);

  • Вызвать метод ClearError объекта Server:

Server.ClearError();

В элементах управления (например в Label) не возможно отобразить информацию об ошибках, так как событие Page_Error происходит прежде чем эти элементы управления отображаются на странице. Поэтому, чтобы сообщить пользователю, что произошла ошибка, в программном коде используется метод Response.Write.

2. Организовать обработку исключений на уровне приложения

а) В окне обозревателя решений дважды кликнуть Web.Config.

б) Для организации обработки ошибок на уровне приложений, изменить файл Web.config следующим образом:

  • Указать, что пользовательские ошибки должны быть разрешены
  • Установить перенаправление ошибок по умолчанию таким образом, чтобы браузер перенаправлял необработанные ошибки на customErrorPage.aspx.

Для этого перед  </system.web> вставить строку:

<customErrors mode=»On» defaultRedirect=»customErrorPage.aspx» />

3. Проверить функциональность обработки исключений.

а)  Нажать клавишу CTRL+F5 для запуска приложения с выключенным отладчиком.

б) На домашней странице кликнуть гиперссылку Обзор трасс под надписью Главная на левой панели. Веб-служба, которая предоставляет данные для этой страницы еще не стартовала, поэтому происходит исключение. Ошибка перехватывается на уровне страницы обработчиком исключения, а ответ записывается на веб-странице.

в) Закрыть Internet Explorer.

г) Запустить  Visual Studio еще раз.

д) Создать новый веб-сервис (Файл – Cоздать – Web Site – ASP.NET  Web Service) c именем  TrailReportWebService, указав место расположения на личном локальном ресурсе (рядом с папкой проекта Adventure-Works).

е) Скопировать во вновь созданную папку с проектом  веб-сервиса TrailReportWebService на локальном ресурсе содержимое папки \\2-213-s2\Хранилище\Программы\Microsoft\MSLearning\2543\Unit02\Labfiles\TrailReportWebService.

ж) В обозревателе решений веб-сервиса TrailReportWebService кликнуть правой кнопкой мыши файл Report.asmx (если он не появился перезапустить Visual Studio с TrailReportWebService), а затем выбирать Просмотреть в обозревателе. Веб-служба стартует, и появится страница описания сервиса для веб-службы Report.asmx.

з) Когда домашняя страница загрузится в Internet Explorer, определить номером порта с которым стартовал веб-сервис TrailReportWebService. Для этого нужно  два раза кликнуть соответствующую иконку ASP.NET Development Server на панели задач Windows (их там должно быть две – нужно выбрать ту, которая относится к TrailReportWebService).

и) Закрыть Internet Explorer. Веб-служба будет продолжать работать.

к) Вернуться к проекту Adventure-Works и в файле Web.config откорректировать блок <appSettings> … </appSettings>, указав номер порта веб-сервиса TrailReportWebService. Например:

<add key=»TrailReportWebService.Report» value=»http://localhost:1234/TrailReportWebService/Report.asmx»/>

л) Запустить веб-приложение без отладчика. На домашней странице кликнуть гиперссылку Обзор трасс. На этот раз, веб-служба работает так что во время выполнения исключение не возникает.

м) Нажмите кнопку Обновить для обновления отчета о погоде и состояния трасс в USA (WA) North Seattle.

н) Отчета о погоде и состоянии трасс отобразится на странице.

о) Кликнуть Southern Europe (Italy) Giro Alps в раскрывающемся списке. Страница автоматически обновляется в соответствии с  выбранным маршрутом.

п) Заменить текст TrailReport.aspx в адресной строке Internet Explorer на текст TrailReportBadAddress.aspx и нажать ENTER. Страница не может быть найдена, и обработчик ошибок выдаст страницу. Эта ошибка была захвачена на уровне приложения обработчиком ошибок который был реализован путем добавления элемента CustomErrors в файл Web.config.

р) Закрыть Internet Explorer.