![]() |
|
Модераторы: gambit |
![]()
|
|
| AleXGray |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 18.1.2007 Репутация: нет Всего: 1 |
Мне очень нравится стандартная страница ошибок ASP.NET. Показывать в броузере всему миру я ее конечно не могу, но очень хотелось бы слать на мыло, при возникновении ошибки.
Вот только я не знаю, как отловить некоторые параметры, которые там отображаются... В частности мне нужен тот кусок кода который там рисуется. Возможно ли его поймать? Как мне сотворить такое чудо? --------------------
В начале было Слово |
|||
|
||||
| Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
нет. такого сделать нельзя. Определяй кусок кода по состоянию стека(там показывается весь путь). -------------------- |
|||
|
||||
| tol05 |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 34 Всего: 170 |
Э-э! Товарищ Mymik! ПАчему такое нЭверие в наши силы, А? А вот, например, товарищи из группы бобруйских программистов, говорят что можно... Или все-таки можно, товарищ Mymik? Поскольку ASP.NET написана на .Net, то и мы можем на том же .Net попытаться сварганить что-нибудь. Ну про текст Exception-а говорить не интересно... С ним и так все ясно, обрабатывается он без проблем... А вот с остальным поробуем так: AleXGray, тебе нужно cделать вот что: 1. В Global.asax перехватывать событие Error, вызывать server.GetLastError() - так ты получишь Exception. 2. В Exception-е напрямую (или через его свойство InnerException) добираешься до его свойства StackTrace (Exception - это ведь тоже класс, так что ж нам, только в дебаггере на него смотреть? Давай програмно с ним работать). 3. Достаем бубен и неутомимо пляшем вокруг StackTrace, пока не вытянем из него то, что нам нужно, а именно: имя файла кода и строку с ошибкой 4. Ну а что делать, когда знаем имя файла и номер строки с ошибкой? Только одно - открыть его reader-ом и считать исходный код. Вот пример. Кривой, как турецкий ятаган. Но сами понимаете, ASP.NET писала группа бобруйских программистов, а я свой код пишу один
результат (errorSource)
5. Message Exception-а, исходный код и все, что еще нужно, берем и где-нибудь сохраняем (ну, в ASP таких мест хватает). 6. В Global.asax (в Application_Error) пишешь
Ну а если только письмом - то текст - в Email ... и прямо с Global.asax можно и отправить -------------------- На хорошей работе и сны хорошие снятся. |
||||||||
|
|||||||||
| Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
tol05, мдя... велики и могучи бобруйские программисты. Мой мозг до такой сложной задачи не опускался
Так что бобруйск или не бобруйск, но вот если ты напишешь такую же штуку для asp.net 1.1 ну или для Web Application (там где файл кода не поставляется заказчику на сервер) тогда ставлю плюс без зазрения совести и икону истинного гуру над моим компьютером у меня в комнате -------------------- |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 34 Всего: 170 |
Mymik, при чем тут asp.net 1.1 или 2.0 ?
Приложение ASP.NET или поставляется с кодом, или поставляется без кода, хоть в 1.1, хоть в 2.0 Те страницы, о которых мы говорим, появляются на дев-машине и только если есть код. Если кода нет, то о чем можно говорить? Кому эти страницы нужны? Рефлектор что-ли с командной строки запускать чтобы из скомпилированного кода исходный код получить? Конечно, мы говорим только о ситуации, когда код есть и при работе сайта он динамически компилируется в Temporary ASP.NET Files вот такой вот -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| AleXGray |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 18.1.2007 Репутация: нет Всего: 1 |
хм. Интересно.
Правда мне еще отлаживать тот вариант обработки слишком большого файла что мне предложили... (он работает, но криво). Но этот случай интереснее, так что файл подождет... Да, не перевелись еще бобруйские программисты... Плюс бы поставил, та експириенса не хватает --------------------
В начале было Слово |
|||
|
||||
| Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
Дык я подумал, что автору нужно именно то что ты показал на рисунке... или я чего не догнал ??? а все остальное в стеке находится... Ну вот у меня есть live-сервер, на нем расположен сайт написаный на Asp.net 1.1 из этого следует, что там не нужны cs файлы, там все данные хранятся в сборках и потому сайт с исходным кодом хранится только у девелоперов ну и где-нибудь в backup'ах у клиента. (Это к тому, что такие ситуации тоже бывают ;) ) Ну да, типа того. P.S. до сих пор не могу понять зачем автору эта штука если в стеке гораздо больше информации -------------------- |
|||
|
||||
| alexburzak |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 12.3.2007 Где: Hadera Репутация: 1 Всего: 1 |
А мне мне мне мне мне можно плюс? А то как то не солидно я выгляжу на этом форуме. На 1.1 в Глобальном файле я делал вот так:
Вот только столько мути приходит.... -------------------- |
||||
|
|||||
| Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
Это не муть, это очень полезная информация... я так много левых багов отловил, которые были до моего прихода на проект. -------------------- |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 34 Всего: 170 |
Что ты, alexburzak, ты отлично выглядишь!.. Просто вопрос был в другом... Не Exception по почте отправить, а покорить ASP.NET и заставить ее не только локально "желтые страницы смерти" (это у Эспозито такая фантазия) показывать, а вообще всем. Т.е. не Exception.Message, а код файла, где была ошибка. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| AleXGray |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 18.1.2007 Репутация: нет Всего: 1 |
та от стека никто не отказывается... стек тоже влеплю... мне не жалко просто наглядней так... --------------------
В начале было Слово |
|||
|
||||
| Zakonnic |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 25.4.2006 Репутация: 3 Всего: 6 |
Разбираюсь тут с отловом ошибок и наткнулся на свойство класса Exception - TargetSite.
Exception.TargetSite Property Gets the method that throws the current exception.
А с рефлекшном можно достать и текст метода. IL достается в два счета, а вот чтобы текст на шарпе из него сделать, надо постараться В МСДН только такая штука:
--------------------
...и никогда не пишите в комментариях правду |
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка под ASP.NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |