C#: не удается отладить обработчик ASHX

У меня есть проект веб-сайта ASP.net С# 4.0. Я вызываю обработчик ASHX, используя обратную передачу jQuery AJAX. Обычно, когда я отлаживаю C#, я использую этот метод Отладка > Присоединить к процессу > выбрать w3wp.exe и начать отладку.

Когда я делаю это со своим обработчиком ASHX, Visual Studio говорит: «Точка останова не будет достигнута. Для этого документа не загружено никаких символов». Разумеется, когда я запускаю AJAX-вызов обработчика, точка останова не срабатывает.

Что меня смущает, так это то, что я могу отлаживать файлы С# в противном случае, то есть код программной части файла ASPX.


person rf_wilson    schedule 04.03.2013    source источник
comment
Если у вас есть проект, а значит и исходники, зачем вообще вручную привязывать отладчик?   -  person Grant Thomas    schedule 04.03.2013
comment
Поскольку сайт является частью решения по управлению контентом, а это означает, что мне нужно войти в систему. Я предпочитаю использовать существующий сеанс веб-браузера, иначе мне придется пройти еще много шагов, чтобы получить часть, которую я хочу отлаживать. Ты замечаешь меня за это? Хороший.   -  person rf_wilson    schedule 04.03.2013
comment
Извини, Грант, я был самонадеянным.   -  person rf_wilson    schedule 04.03.2013


Ответы (3)


Оказывается, Visual Studio фактически не будет загружать символы для отладки, пока не попытается запустить обработчик ASHX. Моя проблема оказалась в другом — ошибка в коде jQuery, который вызывал обработчик.

Сначала я не заметил эту ошибку, поэтому предположил, что обработчик был сбит. Как только обработчик будет вызван, VS позволит вам его отладить. Я не знал, что обработчики ASHX ведут себя таким образом, я думал, что они будут работать как обычный файл C#.

person rf_wilson    schedule 04.03.2013
comment
Они все так работают. Вы заметите, что изменение чего-либо на странице aspx, а также сохранение и установка точки останова вызовет символ точки останова "ошибка", когда вы обновите страницу, тогда вы увидите все загружаемые символы. - person Grant Thomas; 04.03.2013

Обычно это происходит потому, что то, на что вы смотрите (код), — это не то, что вы запускаете.

Попробуйте добавить Debugger.Launch(); и посмотрите, правильно ли он подключает отладчик. Если да, то ваша проблема просто в том, что вы просматриваете другую копию/версию кода, не связанную с отладкой.

person Rune FS    schedule 04.03.2013

Есть ли только один w3wp.exe, попробуйте щелкнуть правой кнопкой мыши проект asp.net, выбрать «Отладка» и «Начать новый экземпляр» в контекстном меню.

person dev123    schedule 04.03.2013
comment
Да, только один экземпляр w3wp.exe - person rf_wilson; 04.03.2013