1

апи Когда я пытаюсь отлаживать этот код:Косяк хит точки останова в веб-контроллера

// POST: api/Events 
    [HttpPost] 
    public async Task<IActionResult> PostEvent([FromBody] object savedEvent) 
    { 

     Event addedEvent = JsonConvert.DeserializeObject<Event>(savedEvent.ToString()); 

     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 

Брус ударил эту линию:

Event addedEvent = JsonConvert.DeserializeObject<Event>(savedEvent.ToString()); 

Debuger реагирует, как я ударил продолжать, но код мимо оленья кожа выполнить. Я действительно смущен. Спасибо за вашу помощь.

ответ

1

Попробуйте удалить асинхронную часть действия. Это не постоянное решение, но это может помочь вам отладить. Еще одна вещь, которую я предлагаю, - это попытаться поймать код в вашем действии. Возможно, ваша десериализация потерпит неудачу и выбрасывает исключение, по какой-то причине отладчик не ловит.

// POST: api/Events 
[HttpPost] 
public ActionResult PostEvent([FromBody] object savedEvent) 
{ 

    Event addedEvent = JsonConvert.DeserializeObject<Event>(savedEvent.ToString()); 

    if (!ModelState.IsValid) 
    { 
     return BadRequest(ModelState); 
    } 
+0

Снятие асинхронной помощи. Это вызвало исключение в библиотеке Newthonsoft. Теперь я вижу, что методы отладки async могут стать немного сложными. Благодаря! –

3

Пара вещей, которые вы можете попробовать

1) Убедитесь, что вы работаете в режиме отладки (не в версии)

Like this

2) Убедитесь, что вы работаете в последней версии кода со всеми символы, загруженные (зависание над точкой останова может дать вам дополнительную информацию о том, почему его отключили)

+0

Я забыл упомянуть об этом. Im в режиме отладки и символы загружаются. –

+0

В коде нет ничего плохого, поэтому он должен ударить. Можете ли вы попытаться остановить перезапуск приложения, также можете ли вы ударить любые другие точки останова в приложении? –

+0

Это странно.Последнее, что я могу предложить, - удалить все из папки Bin, перестроить приложение и запустить его снова. –

0

Я обнаружил, что иногда очистка и перестройка помогают с точными точками останова. Если это не поможет, перезагрузка Visual Studio также может помочь (особенно с 2015 г., по крайней мере, в моем опыте).

Кроме того, у меня также были проблемы с утечками памяти, из-за которых приложение просто входило в определенные части моего кода, хотя обычно это сопровождается сбоем приложения.

Вы не упомянули о каких-либо ошибках или сбоях, только код не выполняется, поэтому я не уверен, что утечка памяти вызовет вашу проблему.

0

Что о попытке:

System.Diagnostics.Debugger.Launch(); 

Катера и присоединяет отладчик к процессу. По крайней мере, убедитесь, что вы туда попали.

0

Возможно, вы используете свое приложение в режиме «Отпуск» вместо «Отладка».

Вы не можете установить контрольные точки в режиме «Release mode» (в большинстве случаев).

Что такое символ (.pdb)? Точное содержимое файлов символов будет отличаться от языка к языку и на основе ваших настроек компилятора , но на очень высоком уровне они записывают, как компилятор превратил ваш исходный код в машинный код, который выполняет процессор .

Источник: https://blogs.msdn.microsoft.com/devops/2015/01/05/understanding-symbol-files-and-visual-studios-symbol-settings/

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