Visual Studio 2013 не попадает на контрольные точки

Я работаю с решением ASP.NET в Visual Studio 2013, которое не ударяет по точкам останова. Visual Studio успешно ударит точки останова на других решениях, а точки останова в этом решении ранее работали. Но в это время они не работают.

Я использую Visual Studio 2013 Ultimate, обновление 4. Это устанавливается на Windows 8.1, 64-разрядный.

Это MVC-решение, которое содержит 3 проекта: BusinessEntities, DataAccessLayer (DAL) и веб-проект. Точки останова во всех этих проектах не работают. Я даже попробовал точку останова внутри Index ActionResult для домашнего контроллера и все еще не смог остановиться в точке останова.

В ленте Visual Studio для конфигурации решения установлено значение Отладка. Кроме того, Configuration Manager показывает, что все 3 из моих проектов имеют конфигурацию, настроенную для Debug. Перезапуск IIS, перезапуск Visual Studio и перезагрузка не помогли решить эту проблему. Выбор сборки > Чистое решение, сборкa > Реконструкция, а затем отладкa > Начать отладку также не исправить.

В web.config отладка в этом node установлена ​​в true:

  <system.web>
      <compilation debug="true" targetFramework="4.0" />

В каталогах bin моих проектов есть файлы .pdb. Я подтвердил, что они удаляются при очистке решения и воссоздаются при его восстановлении.

Что еще мне нужно проверить? Мне действительно нужно получить контрольные точки, работающие в этом решении. Спасибо.

========

Обновления на 12/30/2014 - Ниже приведены несколько вещей, которые я пробовал, следуя комментариям от @paul.abbott.wa.us. Несколько комментариев, которые я сделал, удалены и просто добавлены здесь для ясности.

========

Я запускаю приложение через VS и запускаю его под IIS. Версия IIS - 8,5. При экспонировании имени процесса (через System.Diagnostics.Process.GetCurrentProcess(). ProcessName), w3wp.

В IIS веб-приложение имеет имя сайта, например "local.mysite", и в файле моих хостов есть соответствующая запись. На сайте используется DefaultAppPool, который использует .NET CLR версии 4.0 и интегрированный управляемый трубопровод. 3 приложения в моем решении нацелены на .NET Framework 4.

Если я переключу его обратно на IIS Express, отладчик начнет работать. Версия IIS меняется на 8.0, и имя процесса, конечно же, iisexpress. Технически мне не нужно запускать это под IIS на моей рабочей станции, но я бы предпочел сделать это. Что я неправильно сконфигурировал или пропустил в IIS, который может объяснить сбой отладчика?

Просмотрев настройки сервера проекта на вкладке "Веб" на странице свойств, я заметил, что раскрывающийся список был установлен в "IIS Express". При переключении на "Local IIS" мне было предложено запустить VS в качестве администратора. После этого я смог изменить сервер на локальный IIS и нажать на отладчик. Я проверил изменения, закрыл VS, запустил VS, не запущенный как Admin, и загрузил решение. Веб-проект не смог загрузить следующее сообщение: Проект веб-приложения [MySiteName] настроен на использование IIS. Не удалось получить доступ к метабазе IIS. У вас недостаточно прав для доступа к веб-сайтам IIS на вашем компьютере.

В конечном итоге в некоторых разделах этого сайта будет использоваться проверка подлинности Active Directory. Итак, это решение, которое мне нужно либо запустить сайт под IIS Express, либо всегда запускать VS в качестве администратора, если я хочу запустить сайт под IIS? Спасибо.

Я нашел решение для получения сообщения об ошибке "Проект веб-приложения [MyApp] настроен на использование IIS. Невозможно получить доступ к метабазе IIS. У вас недостаточно привилегий для доступа к веб-сайтам IIS на вашем компьютере." Следуйте инструкциям на этом посту. Ошибка - невозможно получить доступ к метабазе IIS

После предоставления моей учетной записи доступа к папке intetsrv\config веб-проект правильно загружен в Visual Studio без запуска VS в качестве администратора.

Но теперь, когда я запускаю сайт, появляется другое предупреждение: "Невозможно запустить отладку на веб-сервере. IIS не перечисляет веб-сайт, который соответствует запущенному URL-адресу. Нажмите" Справка "для получения дополнительной информации". Сначала я просто нажал "Создать виртуальный каталог" и запустил его снова, но тот же самый сигнал снова появился.

Итак, я выбрал кнопку "Справка" из предупреждения. Это приводит к этой странице MSDN, в которой предлагается около 2 дюжин вещей для проверки, причем примерно половина ссылок на другие статьи. Сейчас я чувствую себя немного как Алиса в Стране Чудес, направляясь дальше по кроличьей норе.

Обновление

2/3/2015: Мое обходное решение при запуске на локальном экземпляре IIS состояло в том, чтобы запустить Visual Studio в качестве администратора. В конечном счете, мы изменили приложение на использование IIS Express, а затем отказались от приложения для другого решения, которое построил коллега. Это решение не имело никакого отношения к этой проблеме. Спасибо всем за ваши отзывы и идеи.

3/7/2016 Обновление: на этот раз я не могу повторить эту проблему, так как у нас больше нет решения в штате, где было, когда я работал над этим в прошлом году. Буду признателен, если модератор может закрыть этот вопрос. Варианты закрытия этого не совпадают с моим текущим сценарием, но, возможно, кто-то еще найдет предложения ниже полезными, если они столкнутся с этим сценарием. Спасибо всем, кто внес предложение.

Ответы

Ответ 1

Убедитесь, что:

  • Инструменты → Отладчик параметров " Включить только мой код" не отмечен
  • Вы запускаете приложение в режиме Отладка, а не в режиме деблокирования
  • Решение сборка обновлена ​​.

Ответ 2

Из моего предыдущего опыта, пожалуйста, рассмотрите следующие вопросы:

  • Проверьте, что вы поставили точку останова в нужном месте, и вы запускаете соответствующую страницу или контроллер.
  • Щелкните правой кнопкой мыши точку останова = > Расположение = > Проверьте "Разрешить исходный код отличаться от исходной версии". Если вы установили resharper, возможно, это поможет.

  • Если вы звоните через вызов Ajax, убедитесь, что на странице не было ошибки java- script (для этого IE улавливает js-ошибки по умолчанию)

  • Несколько раз это из-за того, что вы не строили полностью, поэтому очищайте (щелкните правой кнопкой мыши по решению и выберите "clean solution" item), затем "Rebuild Solution".

  • Несколько раз это, потому что вы можете отключить возможность сборки для некоторые библиотеки классов. Поэтому в этой ситуации вам нужно перестроить те класс-библиотеки. (вы можете узнать это, выбрав "Configuration Manager" из меню "Build" )

Надеемся на эту помощь

Ответ 3

Я встретил эту проблему до этого и решил ее после того, как я перестроил пакет решения (щелкните правой кнопкой мыши пакет решений и запустите команду rebuild)

Ответ 4

Вот список идей, которые я придерживаюсь для такого случая.

Проверьте, на что ссылается ваша dll, и убедитесь, что это код, который вы пытаетесь отладить.

Проверьте, что вы находитесь в правильном режиме при создании: Debug/Release, поскольку они могут помещать DLL в разные места.

Прикреплены ли вы к правильному процессу?

Для веб-сайта IIS код, который вы работаете, совпадает с кодом, запущенным в IIS?

Перейдите в раздел "Отладка" > "Windows" > "Модули", и если соответствующая DLL существует, щелкните правой кнопкой мыши и загрузите символы. Если это не в списке, попробуйте запустить код в любом случае. Иногда, даже если он говорит, что точка останова не будет удалена, это только потому, что dll не загружается, пока вы не введете сценарий, который ему нужен. Попробуйте сценарий, который зависит от DLL, и он может просто попасть в точку останова.

Перезагрузите браузер. У вас может быть что-то кэшированное из старой DLL.

Ответ 5

Единственное, что сработало для меня, это изменение типа кода.

В окне Присоединить к процессу я изменил выбор Присоединить к: на Автоматически определять тип кода для отладки, после чего мои контрольные точки были достигнуты.

Ранее у меня был только собственный код.