2013-12-13 2 views
2

У меня возникает очень странная проблема при отладке приложения 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 с нуля - до сих пор нет радости

ответ

0

В конце концов полное переформатирование и Переустановка была единственным, что решить эту проблему

0

Попробуйте открыть окно Modules(Debug->Windows->Modules) и просмотрите список модулей. Вы должны увидеть DLL-файлы, относящиеся к вашему проекту. Теперь важно то, говорят ли колонки Symbol Status: Symbols Loaded. Если это не так, то посмотрите на столбец Path, проверьте, выглядит ли это правильно.

+0

Я проверил окно модулей - показывает все соответствующие символы загружены и временные метки соответствуют правильно последнему времени сборки – Anduril

Смежные вопросы