2010-02-04 5 views
5

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

Также файл web.config имеет debug = true.

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

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

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

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

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

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

+0

Вы используете WCF для вызова этого веб-сервиса? –

+0

Нет, это веб-сервис asmx – kaptan

+0

Возможный дубликат [IIS, не дающий номера строк в трассировке стека даже при наличии pdb] (http://stackoverflow.com/questions/2673623/iis-not-giving-line-numbers-in- stack-trace-even-but-pdb-present) –

ответ

0

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

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

Для получения дополнительной информации см:

ASP.NET configuration - deployment Element (ASP.NET Settings Schema)

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

+0

Я проверил этот файл, и в этом файле нет . – kaptan

+0

В комментариях к приведенному выше связанному сообщению http://stackoverflow.com/questions/2673623/iis-not-giving-line-numbers-in-stack-trace-even-though-pdb-present/2673642#2673642, пользователь @Graeme говорит, что если вы это сделаете, он полностью отключит трассировку стека, а не только номера строк. –

0

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

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

+0

.pdb файлы могут быть использованы с «Release» или оптимизированной dll без проблем. Я делал это много раз. –

0

Обязательно установите «debug = true» в файле web.config, без него номера строк не отображаются в исключениях.

+0

это уже есть – kaptan

0

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

1

I если бы это была одна и та же проблема, и все, что под солнцем, пыталось исправить.Ничего не получилось, пока я не нашел приемлемый ответ в этом подобном вопросе: IIS not giving line numbers in stack trace even though pdb present.

Оказывается, с помощью олицетворения с web.config:

<identity impersonate="true" /> 

приводит к потере номера строк в StackTrace. Я взял вход, и мои номера строк вернулись, вернули его и через несколько часов (обновить билет Kerberos?) Номера строк исчезли снова.

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

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

+1

Это единственное решение, которое сработало для меня. Я надеюсь, что «impersonate = true» не является чем-то необходимым для моих сайтов. – Arvin