powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как получить исх. код того места, где произошла ошибка
19 сообщений из 19, страница 1 из 1
Как получить исх. код того места, где произошла ошибка
    #33958354
Аноним
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Проблема в следущюем:
Есть приложение ASP.Net, в котором есть ошибки.
Периодически они возникают и хотелось бы сделать для них лог.
В этом логе хотелось бы хранить помимо всего прочего, кусок кода, в котором произошла ошибка (как на страничке, которую ASP.Net сам вываливает).
Вопрос: Как получить этот кусок?

Заранее спасибо.
...
Рейтинг: 0 / 0
Как получить исх. код того места, где произошла ошибка
    #33958414
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что то в этом роде
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            Response.Write( 1  / CDbl(TextBox1.Text))
        Catch ex As Exception
            Response.Write(CType(ex, System.InvalidCastException).StackTrace)
        End Try

    End Sub
...
Рейтинг: 0 / 0
Как получить исх. код того места, где произошла ошибка
    #33958512
cadet354
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, <Аноним>, Вы писали:

А>Добрый день!

А>Проблема в следущюем:
А>Есть приложение ASP.Net, в котором есть ошибки.
А>Периодически они возникают и хотелось бы сделать для них лог.
А>В этом логе хотелось бы хранить помимо всего прочего, кусок кода, в котором произошла ошибка (как на страничке, которую ASP.Net сам вываливает).
А>Вопрос: Как получить этот кусок?
например в global.asax завести следующий метод

protected void Application_Error(object src, EventArgs e)
{
    Exception ex=Server.GetLastError();
    EventLog.WriteEntry("YouApp",ex.Message,EventLogEntryType.Error);
}
А>Заранее спасибо.... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
Как получить исх. код того места, где произошла ошибка
    #33958569
Аноним
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, cadet354, Вы писали:

C>например в global.asax завести следующий метод
C>
C>protected void Application_Error(object src, EventArgs e)
C>{
C>    Exception ex=Server.GetLastError();
C>    EventLog.WriteEntry("YouApp",ex.Message,EventLogEntryType.Error);
C>}
C>

Спасибо за ответ. Однако, как делать записи в лог — это я знаю :user:
А вопрос-то был о том как получить кусок кода в котором ошибка случилась?
...
Рейтинг: 0 / 0
Как получить исх. код того места, где произошла ошибка
    #33958789
cadet354
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, <Аноним>, Вы писали:

А>Спасибо за ответ. Однако, как делать записи в лог — это я знаю :user:
это хорошо :)
осталось почитать про Exception (InnerException и StackTrace :) )... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
Как получить исх. код того места, где произошла ошибка
    #33958918
Dronopotamus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, cadet354, Вы писали:

C>Здравствуйте, <Аноним>, Вы писали:

А>>Спасибо за ответ. Однако, как делать записи в лог — это я знаю :user:
C>это хорошо :)
C>осталось почитать про Exception (InnerException и StackTrace :) )

из StackTrace не получить _кусок_ кода... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
Как получить исх. код того места, где произошла ошибка
    #33959110
Аноним
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, cadet354, Вы писали:

C>Здравствуйте, <Аноним>, Вы писали:

А>>Спасибо за ответ. Однако, как делать записи в лог — это я знаю :user:
C>это хорошо :)
C>осталось почитать про Exception (InnerException и StackTrace :) )

StackTrace и "кусок кода" — это разные вещи!
...
Рейтинг: 0 / 0
Как получить исх. код того места, где произошла ошибка
    #33959204
cadet354
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, Dronopotamus, Вы писали:

D>Здравствуйте, cadet354, Вы писали:

C>>Здравствуйте, <Аноним>, Вы писали:

А>>>Спасибо за ответ. Однако, как делать записи в лог — это я знаю :user:
C>>это хорошо :)
C>>осталось почитать про Exception (InnerException и StackTrace :) )

D>из StackTrace не получить _кусок_ кода
да, чего-то я погорячился, но хоть стек вызовов можно посмотреть:

[Test]
        public void TestException()
        {
            try
            {
                __Throw();
            }
            catch(Exception exc)
            {
                Console.WriteLine(exc.StackTrace);
            }
        }
        private void __Throw()
        {
            __Throw2();
        }
        private void __Throw2()
        {
            throw new ArgumentException("mega");
        }
выводит
at TestRealtyImage.Class2.__Throw2() in c:\projects\dnnmodules\realty\realtyimage\testrealtyimage\class2.cs:line 41
at TestRealtyImage.Class2.__Throw() in c:\projects\dnnmodules\realty\realtyimage\testrealtyimage\class2.cs:line 37
at TestRealtyImage.Class2.TestException() in c:\projects\dnnmodules\realty\realtyimage\testrealtyimage\class2.cs:line 28... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
Как получить исх. код того места, где произошла ошибка
    #33959555
manovcih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не знаю подойдет ли, но есть готовое решение - http://msdn.microsoft.com/msdnmag/issues/06/08/Toolbox/, параграф Review Your Web App's Errors. 
( Блог программиста )
...
Рейтинг: 0 / 0
Как получить исх. код того места, где произошла ошибка
    #33959807
Фотография vbnet2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему вы вообще подумали, ЧТО ЭТО ВОЗМОЖНО? . У вас есть только откомпилированная библиотека. Вы, конечно, можете ЕЕ ДЕКОМПИЛИРОВАТЬ через system.Reflection, как это делает например REFLECTOR, ну тока года на написание этой проги может вам не хватить. Потом, кто сказал, что код не подвергался обфускации и полученный результат декомпиляции будет читаем?
Ну это конечно речь вообще только о DebugMode - в ReleaseMode ни о каких тегах исходного текста не может быть и речи...
...
Рейтинг: 0 / 0
Как получить исх. код того места, где произошла ошибка
    #33960660
cadet354
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, Аноним, Вы писали:


А>StackTrace и "кусок кода" — это разные вещи!
Да ваша правда, но вот алгоритм как можно сие сделать:
по stack trace вы получаете функцию где это произошло,
открываете pdb файл (можно и откомпилировать релизз версию с поддержкой debug symbols),
находите путь к этому файлу,
открываете его и показываете нужную строчку :)
Именно так делает ASP.NET,
причем в pdb прописывается тот путь который на машине разработчика, сильное ограничение вы не находите?
После всего этого, вам точно это надо?
...
Рейтинг: 0 / 0
Как получить исх. код того места, где произошла ошибка
    #33960813
alexdp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
" Аноним " <0@users.rsdn.ru>; сообщил/сообщила в новостях следующее:
news:2088188@news.rsdn.ru...
> Добрый день!
>
> Проблема в следущюем:
> Есть приложение ASP.Net, в котором есть ошибки.
> Периодически они возникают и хотелось бы сделать для них лог.
> В этом логе хотелось бы хранить помимо всего прочего, кусок кода, в
> котором произошла ошибка (как на страничке, которую ASP.Net сам
> вываливает).
> Вопрос: Как получить этот кусок?

Если именно "как на страничке, которую ASP.Net сам вываливает",

то делаем Exception ex
ex.ToString();
И там будет все то самое.Posted via RSDN NNTP Server 2.0
...
Рейтинг: 0 / 0
Как получить исх. код того места, где произошла ошибка
    #33961059
Sinclair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, <Аноним>, Вы писали:
А>Вопрос: Как получить этот кусок?

1. Взять у Exception TargetSite.
2. Взять у MethodBase GetMethodBody().
3. Взять у MethodBody GetIlAsByteArray()
4. Декомпилировать полученный IL методами из Reflector или Phoenix. 1.1.4 stable rev. 510
...
Рейтинг: 0 / 0
Как получить исх. код того места, где произошла ошибка
    #33962599
Аноним
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, alexdp, Вы писали:

A>Если именно "как на страничке, которую ASP.Net сам вываливает",

A>то делаем Exception ex
A>ex.ToString();
A>И там будет все то самое.

Не будет :crash: Проверял.
...
Рейтинг: 0 / 0
Как получить исх. код того места, где произошла ошибка
    #33962612
Аноним
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, vbnet2000, Вы писали:

V>А почему вы вообще подумали, ЧТО ЭТО ВОЗМОЖНО?. У вас есть только откомпилированная библиотека. Вы, конечно, можете ЕЕ ДЕКОМПИЛИРОВАТЬ через system.Reflection, как это делает например REFLECTOR, ну тока года на написание этой проги может вам не хватить. Потом, кто сказал, что код не подвергался обфускации и полученный результат декомпиляции будет читаем?
V>Ну это конечно речь вообще только о DebugMode — в ReleaseMode ни о каких тегах исходного текста не может быть и речи...

V>
данное сообщение получено с www.gotdotnet.ru
V>ссылка на оригинальное сообщение


Если я вижу исходный код на странице, сообщающей об ошибке в ASP.NET — значит это возможно.
Вы так не считаете?
...
Рейтинг: 0 / 0
Как получить исх. код того места, где произошла ошибка
    #33965811
Sinclair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, <Аноним>, Вы писали:

А>Если я вижу исходный код на странице, сообщающей об ошибке в ASP.NET — значит это возможно.
Вообще-то исходный код на странице ты видишь только при ошибке компилятора . Никакого отношения к рантайм-сиключениям это не имеет.
А>Вы так не считаете?
А вот я считаю, что нужно быть внимательным. 1.1.4 stable rev. 510
...
Рейтинг: 0 / 0
Как получить исх. код того места, где произошла ошибка
    #33966554
Аноним
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, <Аноним>, Вы писали:

А>>Если я вижу исходный код на странице, сообщающей об ошибке в ASP.NET — значит это возможно.
S>Вообще-то исходный код на странице ты видишь только при ошибке компилятора . Никакого отношения к рантайм-сиключениям это не имеет.
А>>Вы так не считаете?
S>А вот я считаю, что нужно быть внимательным.

Уважаемый Sinclair, обратите пожалуйста Ваше драгоценное внимание на тот факт, что ошибок компиляции СБОРОК (чтобы потом не было разночтений уточню, что под сборками сдесь понимаются не временные сборки, которые генерятся движком ASP.Net в своей директории, а тех которые складываются в каталог bin) на этапе выполнения (а именно этот этап здесь обсуждается) быть не может!!!

И ошибка деления на ноль так же замечательно отображается в стандартной ASP.Net страничке с указанием того места, где она произошла.
Если не верите мне — проверьте. Я проверял.
IMHO: И вообще прежде чем писать этот бред про ошибку компиляции — было бы неплохо убедиться в достоверности своих слов.
...
Рейтинг: 0 / 0
Как получить исх. код того места, где произошла ошибка
    #33966885
Sinclair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, <Аноним>, Вы писали:

А>И ошибка деления на ноль так же замечательно отображается в стандартной ASP.Net страничке с указанием того места, где она произошла.
А>Если не верите мне — проверьте. Я проверял.
Виноват, беру свои слова обратно.
А>IMHO: И вообще прежде чем писать этот бред про ошибку компиляции — было бы неплохо убедиться в достоверности своих слов.
Ок, постараюсь так и делать. 1.1.4 stable rev. 510
...
Рейтинг: 0 / 0
Как получить исх. код того места, где произошла ошибка
    #33966981
Фотография vbnet2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
Если я вижу исходный код на странице, сообщающей об ошибке в ASP.NET — значит это возможно. 
Вы так не считаете?
Я ж вам своем мнение обьяснил. Это сделать возможно. Только один раз это сделали в микрософте. Вторая такая прога, внизу на рисунке. Третьего дизасемблер на нашей планете - будет ваш.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как получить исх. код того места, где произошла ошибка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]