У меня возникает очень странная проблема при отладке приложения ASP.Net. Кажется, что это происходит со всеми функциями внутри определенного класса. Есть несколько вопросов, которые я подозреваю, все связаны между собой:Отладка приложения ASP.Net - пропущенные строки и точки останова не попадают
- Breakpoints внутри функции игнорируются, но если я ставлю точку останова перед тем эта функция вызывается, а затем f11 к шагу в я могу отладить функцию в обычном режиме.
- Если я присоединю отладчик, а затем добавлю точку прерывания, он добавит его (хотя он будет проигнорирован, как указано выше), пока код не был выполнен. Как только функция была вызвана, если я попытаюсь добавить визуальную студию точки разрыва, вы получите сообщение об ошибке «Следующая точка останова не может быть установлена ... Общую языковую среду выполнения не удалось установить точку останова.
При отладке некоторых из линии, кажется, чтобы перепрыгнуть полностью для примера рассмотрим функцию ниже:..
public GetCareersParametersByCriteriaResponse GetCareersParametersByCriteria(GetCareersParametersByCriteriaRequest request) { var response = new GetCareersParametersByCriteriaResponse { CareersParameters = new List<CareerParametersView>() }; var predicate = PredicateBuilder.True<CareerView>(); if (!request.IncludeExcludeTop20Careers) { predicate = predicate.And(c => !c.ExcludeTop20); } predicate = predicate.And(c => c.EducationMinimumLevel <= request.MinimumEducationLevel && c.EducationMaximumLevel >= request.MaximumEducationLevel); var careerIds = _careerLibrary.Careers.AsQueryable().Where(predicate).Select(c => c.CareerId).Distinct(); foreach (var careerId in careerIds) { response.CareersParameters.Add(_careerLibrary.CareerParametersLookup[careerId]); } response.IsSuccess = true; return response; }
Это, кажется, пропустить присваивание «предикат» и значение показывает, как нуль, однако линия позже, добавляющий образование мин/max по-прежнему выполняется, но значение предиката остается равным нулю. Оттуда он пропускает прямой в t он foreach, не присваивая карьере и, казалось бы, не вызывая двигаться дальше на итераторе. В результате careerId не присваивается значение (равно 0) и выдает ошибку, потому что 0 не является допустимым идентификатором.
Примечание: Несмотря на то, что 0 является недопустимым идентификатором и приводит к тому, что исключающее исключение «данный ключ, отсутствующий в исключении словаря», функция продолжает выполнение и возвращает. В этот момент отладчик полностью исчезает (не возвращается к вызывающей функции), и все, кажется, блокируется (т. Е. Страница никогда не загружается и т. Д.), Пока я не отсоединяю отладчик, и это дает желтый экран смерти.
Thing Я уже пробовал:
- Очищающий раствор
- Перестройка решение
- вручную удалить все DLLки и PDB файлы в бен папке
- Перезапуск Visual Studio
- Перезагрузка
- Обеспечение «Оптимизировать код» отключен
- Обеспечение того, что несколько потоков не вызывают функцию одновременно.
- Изменение файла кода и его устранение, чтобы убедиться, что он использует самую последнюю версию. Это. (также использовались модули Debug> Windows> и проверял метку времени на pdb - она обновлена)
- Удаление копии IIS библиотек DLL, расположенных в C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP. NET Files
- Очистка символьного кэша
- Полная переустановка VS2012 и всех плагинов (например,ReSharper)
Казалось начать сразу происходит после установки обновления VS2012 4, но я ничего не могу найти в Интернете по поводу каких-либо проблем, как это после обновления и переустановки VS не помогло, так это может быть совпадением
Обновление: После получения сообщения при отладке, что исходный код отличается от DLL в C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Временные файлы ASP.NET ... (то есть копия кода IIS) Я думал, что могу что-то сказать. Однако после удаления тех, кого он еще не сделал никакой разницы, поэтому, добавив, что в список вещей, которые я пытался
Update 2: Полностью переустановил VS2012, так как я подозревал, что обновление может быть в вине. Однако до сих пор нет радости, такого же странного поведения
Обновление 3: После дальнейших исследований я, похоже, получаю те же странные проблемы для всех классов внутри одного и того же проекта/сборки (другие проекты в решении в порядке) это предполагает проект где-нибудь. Открыто для всех предложений :-)
Update 4: Пробовал Клиринговый Symbol Cache в Сервис> Параметры> Debugging> Symbols
обновление 5: Пробовал переустановить VS2012 с нуля - до сих пор нет радости
Я проверил окно модулей - показывает все соответствующие символы загружены и временные метки соответствуют правильно последнему времени сборки – Anduril