Visual Studio не позволява точки на прекъсване в MVC изгледи

Понякога Visual Studio не ми позволява да задавам точки на прекъсване в MVC изгледи. Това ми се е случвало десетки пъти, но не се случва за всеки изглед и не знам защо.

Когато щракнете върху лявата лента, за да поставите точка на прекъсване, тя поставя бял кръг вместо нормалния червен кръг. Съобщението, когато задържите курсора на мишката върху него, е „Точката на прекъсване в момента няма да бъде достигната. Изходният код е различен от оригиналната версия.“ Продължава да описва как да се позволи достигането на точки на прекъсване, но това води до странни резултати и аз така или иначе не искам това.

Ако грешката е правилна, тогава искам да стартирам оригиналния изходен код. Не знам какво се случва зад кулисите във VS; Опитвам се да възстановя и всичко това, но не помага. Работя в режим на отстраняване на грешки във VS 2012.

екранна снимка на опит за поставяне на точка на прекъсване в изгледа MVC vs. 2012


person levininja    schedule 28.08.2013    source източник
comment

Работя под boot2docker 1.3.1.

Имам Docker контейнер, работещ с уеб сървър чрез uwsgi --http :8080.

Ако прикача към контейнера, мога да разглеждам уеб сайта с помощта на lynx http://127.0.0.1:8080, за да знам, че сървърът работи.

Пуснах моя контейнер с:

$ docker run -itP --expose 8080 uwsgi_app:0.2

Има следните подробности:

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
5248ad86596d        uwsgi_app:0.2     "bash"              11 minutes ago      Up 11 minutes       0.0.0.0:49159->8080/tcp   cocky_hypatia
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' 5248ad86596d
172.17.0.107

Мислех, че мога да осъществя достъп до този уеб сайт от моя хост, като отида на http://172.17.0.107:49159.

Това не работи. Просто виждам „свързване...“ в Chrome, но не стигам доникъде.

какво правя грешно

  -  person Darren Kopp    schedule 28.08.2013
comment
Работя в режим на отстраняване на грешки. Има ли друга подходяща информация, която трябва да включа във въпроса си?   -  person levininja    schedule 28.08.2013
comment
няма много повече, което можете да добавите. както казах, може да има толкова много променливи. може да е копиране на dll от друга изходна директория на проекти, може да е, че не генерира pdb, може да е, че сочи към други файлове, различни от това, което очаквате, и т.н.   -  person Darren Kopp    schedule 28.08.2013


Отговори (7)


Това може да се дължи на много неща, но трябва да проверите няколко елемента, с които помогнах на хората наскоро:

  • Първа стъпка: трябва да има PDB файл заедно с DLL, за да се даде възможност за отстраняване на грешки. (вижте: Какво е PDB файл?) Уверете се, че имате PDB в изпълняваща директория.

  • Почистете, за да премахнете всички стари DLL файлове от вашите папки за кошче.

  • Уверете се, че приложението ви изпълнява компилация на текущия ви код (същата версия, която имате във Visual Studio). Не предполагайте, че това е само защото сте щракнали върху „изграждане“ или „внедряване“. Ако не са открити промени, нещата често не се случват. Проверете времето за изграждане на сборката или променете нещо и изградете отново, за да видите промяната на размера на файла.

  • Ако изпълнявате нещо, свързано с мрежата, уверете се, че браузърът не кешира код или IIS не поддържа дълго работещ процес.

  • Убийте всички работещи екземпляри на Visual Studio Development Server (можете да направите това от диспечера на задачите или по-просто от системната област - те изглеждат като лого на IE и когато задържите курсора на мишката върху тях, те ще ви кажат на кой порт работят).

  • Рестартирайте IIS, като използвате iisreset от командния ред.

  • Проверете настройките за отстраняване на грешки във Visual Studio (Tools > Options > Debugging > Symbols) Искате автоматично да зареждате символи и ако свързвате други сборки, трябва да посочите техните PDB файлове тук.

person Kirk Broadhurst    schedule 28.08.2013
comment
Вижте моя коментар по-долу относно: web.config, за да промените списъка си с неща, които да проверите - person Aaron Hudon; 21.11.2017

Така че тази сутрин имах този проблем и решението за мен беше свързано със синтаксиса на бръснача.

Зададох променлива в оператор if

@If (my condition)
{
  myVar1 = "blah blah blah"
  @myVar2 = 1 <== This line here was causing my razor to crap out on render
}

Така че всички други неща са добри неща, но неправилният синтаксис на бръснача също може да причини проблема с точката на прекъсване. В този случай това беше символът @ на myVar2 вътре в кодовия блок... Само за информация

person Bryan Halterman    schedule 15.09.2017
comment
Докато този въпрос беше за VS2012, в момента съм на VS2015 - person Bryan Halterman; 15.09.2017

Най-простото решение, което открих, за да заобиколя този проблем, е:

Задайте точка на прекъсване в кода на контролера, която е точно преди извикването на View. След това, когато тази точка на прекъсване бъде достигната, преминете през (използвайки F10) няколко пъти. Ще премине през _ViewStart.cshtml и може би още нещо или две. Но скоро ще стигне до гледката.

След като сте в изгледа, натискането на F5 (продължи) ще ви отведе до точката на прекъсване в изгледа.

person levininja    schedule 27.04.2015

въведете описание на изображението тук

Уверете се, че "debug" е зададено и Voila ... debug работи отново:-)

person Casper Kvolsbæk    schedule 17.04.2018

От отговора нищо не ми помогна да задам точка на прекъсване в javascript кода. Преместих кода на javascript вътре във файла Scripts\myscript.js и замених блока на скрипта на

<script src="@Url.Content("~/Scripts/myscript.js")"></script>
person Pete    schedule 23.08.2016

За да добавите към отговора на @kirk-broadhurst (моля, променете, ако е възможно), проверете отново вашия web.config, по-специално флага compilation под system.web. Дори ако изграждате за отстраняване на грешки, ако атрибутът debug е зададен на false, ще срещнете проблеми при отстраняване на грешки в Razor.

<system.web>
    <compilation debug="true" targetFramework="4.6" />
</system.web>
person Aaron Hudon    schedule 20.11.2017

Уверете се, че конфигурацията на вашето решение е зададена на Debug not on release.

Благодаря

person Joe    schedule 15.04.2016