Отсутствует номер строки в трассировке стека, хотя включены файлы PDB - PullRequest
6 голосов
/ 05 февраля 2010

Это сводит меня с ума. У меня этот веб-сервис реализован с помощью C # с использованием VS 2008. Я публикую его на IIS. Я изменил сборку релиза, чтобы файлы pdb копировались вместе с dll в целевой каталог на inetpub.

Также в файле web.config есть debug = true.

Затем я вызываю веб-службу, которая выдает исключение. Трассировка стека не содержит номеров строк. Понятия не имею, что мне здесь не хватает, есть идеи?

Дополнительная информация: Если я запускаю веб-приложение, используя встроенный веб-сервер VS, оно работает, и я получаю номера строк в трассировке стека. Но если я копирую в IIS те же файлы (pdb и dll), которые использует встроенный веб-сервер VS, номера строк в трассировке стека все же отсутствуют.

Похоже, что-то связанное с IIS игнорирует файлы pdb!

Обновление Когда я публикую в IIS, все файлы pdb публикуются в каталоге bin, и все выглядит хорошо. Но когда я захожу в «C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files» в определенном каталоге, связанном с моим проектом, я вижу, что все файлы сборки (.dll) находятся там. , но нет файлов pdb. Но этого не происходит, если я запускаю проект, используя встроенный веб-сервер VS. Поэтому, если я скопирую файлы pdb вручную во временную папку, я смогу увидеть номера строк.

Есть идеи, почему файлы pdb не копируются во временную папку?

Кстати, когда я присоединяюсь к рабочему процессу, я вижу, что он говорит, что символы загружены!

Ответы [ 5 ]

3 голосов
/ 03 декабря 2010

У меня была такая же проблема, и я попробовал все под солнцем, чтобы попытаться это исправить. Ничего не помогало, пока я не нашел приемлемый ответ на этот похожий вопрос: IIS не дает номера строк в трассировке стека, даже если pdb присутствует .

Получается, используя олицетворение с web.config:

<identity impersonate="true" />

вызывает потерю номеров строк в трассировке стека. Я вынул запись, и мои номера строк вернулись, вернули ее обратно, и через несколько часов (обновление билета Kerberos?) Номера строк снова исчезли.

Не уверен, почему олицетворение влияет на трассировку стека, но это так - был бы рад, если бы кто-то подтвердил / объяснил это ...

Мне нужно включить олицетворение для большинства моих сайтов (и у этих сайтов есть номера строк, иди с цифрой), поэтому я отключил его для этого конкретного веб-сайта и получил номера строк !!

0 голосов
/ 30 сентября 2010

Не уверен, поможет ли это, но в свойствах моего проекта VS2008 C # на вкладке «Сборка» есть кнопка «Дополнительно», где мне пришлось установить отладочную информацию на «полный» или «только для pdb»

0 голосов
/ 05 февраля 2010

Присоединиться к рабочему процессу с помощью VS или windbg и посмотреть, сможет ли он найти ваш pdb и соответствует ли он вашей сборке?

Другая распространенная причина в том, что вы на самом деле используете релизные dll [которые оптимизированы]. Я сомневаюсь, что это что-то конкретное, что связано с IIS.

0 голосов
/ 24 февраля 2010

Пожалуйста, убедитесь, что вы установили "debug = true" в web.config, без него номера строк не отображаются в исключениях.

0 голосов
/ 05 февраля 2010

Может быть, сервер, на котором вы публикуете, имеет настройку <deployment retail="true" />, настроенную в системном файле machine.config в:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG

Подробнее см .:

Конфигурация ASP.NET - элемент развертывания (схема настроек ASP.NET)

Просто мысль.

...