2014-12-29 20 views
14

Pracuję z rozwiązaniem ASP.NET w programie Visual Studio 2013, które nie przebiło punktów przerwania. Program Visual Studio pomyślnie osiągnie pułapki w innych rozwiązaniach, a przerwania w tym rozwiązaniu poprzednio pracowały pod. Ale w tym czasie nie działają.Program Visual Studio 2013 nie trafia w pułapki

Używam Visual Studio 2013 Ultimate, Update 4. Jest zainstalowany na Windows 8.1, 64-bitowy.

Jest to rozwiązanie MVC, które zawiera 3 projekty: BusinessEntities, DataAccessLayer (DAL) i projekt WWW. Punkty przerw we wszystkich tych projektach nie działają. Próbowałem nawet breakpoint wewnątrz Index ActionResult dla kontrolera domowego, i nadal nie udało się zatrzymać w punkcie przerwania.

W wstążce programu Visual Studio konfiguracja rozwiązania jest ustawiona na Debugowanie. Ponadto program Menedżer konfiguracji pokazuje, że wszystkie 3 moje projekty mają konfigurację debugowania. Ponowne uruchomienie IIS, ponowne uruchomienie Visual Studio i ponowne uruchomienie nie rozwiązały tego problemu. Wybór Build> Clean Solution, Build> Rebuild, a następnie Debugowanie> Start Debugging też tego nie naprawiło.

W web.config, debugowanie jest ustawiona na wartość true w tym węźle:

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

Istnieje .pdb pliki w katalogach bin moich projektów. Potwierdziłem, że są one usuwane po wyczyszczeniu rozwiązania i odtwarzane po przebudowaniu.

Co jeszcze muszę sprawdzić? Naprawdę potrzebuję dostać breakpoints pracujące w tym rozwiązaniu. Dzięki.

========

Aktualizacja 12/30/2014 - Poniżej przedstawiamy kilka rzeczy, które próbowałem po otrzymaniu uwag od @ paul.abbott.wa.us. Kilka komentarzy, które zrobiłem, zostało usuniętych i po prostu dołączonych tutaj dla jasności.

========

Zaczynam aplikację za pośrednictwem VS i uruchomienie go pod IIS. Wersja IIS to 8.5. Podczas ujawniania nazwy procesu (przez System.Diagnostics.Process.GetCurrentProcess(). ProcessName), to w3wp.

W IIS aplikacja internetowa ma nazwę witryny, na przykład "local.mysite", a mój plik hosts zawiera odpowiadający wpis. Witryna korzysta z narzędzia DefaultAppPool, który korzysta z .NET CLR w wersji 4.0 i z trybu Integrated Managed Pipeline. 3 aplikacje w moim celu docelowym .NET Framework 4.

Po przełączeniu tego z powrotem do IIS Express, debugger zacznie działać. Wersja IIS zmienia się na 8.0, a nazwa procesu to oczywiście iisexpress. Technicznie nie muszę uruchamiać tego w IIS na mojej stacji roboczej, ale wolałbym to zrobić. Co mam źle skonfigurowany lub przeoczony w IIS, który może wyjaśnić błąd debuggera?

Przeglądając ustawienia serwera projektu na karcie WWW strony właściwości, zauważyłem, że menu rozwijane zostało ustawione na "IIS Express". Po przełączeniu tego na "Local IIS", zostałem poproszony o uruchomienie VS jako Administrator. Po wykonaniu tej czynności mogłem zmienić serwer na Local IIS i trafić do debuggera. Sprawdziłem zmianę, zamknąłem VS, uruchomiłem VS nie działa jako administrator i załadowałem rozwiązanie. Projekt WWW nie załadował się z następującym komunikatem: Projekt aplikacji sieci Web [MySiteName] jest skonfigurowany do korzystania z IIS. Nie można uzyskać dostępu do metabazy IIS. Nie masz wystarczających uprawnień, aby uzyskać dostęp do witryn internetowych IIS na swoim komputerze.

Ostatecznie niektóre sekcje tej witryny będą zawierały uwierzytelnianie Active Directory. Tak, czy jest to rozwiązanie, które jest konieczne, aby uruchomić witrynę w IIS Express, czy zawsze uruchamiać VS jako Administrator, jeśli chcę uruchomić witrynę w IIS? Dzięki.

Znalazłem rozwiązanie problemu z komunikatem o błędzie "Projekt aplikacji sieci Web [MyApp] jest skonfigurowany do korzystania z IIS. Nie można uzyskać dostępu do metabazy IIS. Nie masz wystarczających uprawnień, aby uzyskać dostęp do witryn internetowych IIS na komputerze. "Wykonaj kroki opisane w tym poście. Error - Unable to access the IIS metabase

Po przyznaniu dostępu do mojego konta do folderu intetsrv \ config, projekt internetowy został poprawnie załadowany do programu Visual Studio bez uruchamiania VS jako administrator.

Ale teraz, gdy uruchomię witrynę, pojawia się kolejny alert: "Nie można rozpocząć debugowania na serwerze sieciowym. Usługi IIS nie wyświetlają strony internetowej odpowiadającej uruchomionemu adresowi URL. Kliknij Pomoc, aby uzyskać więcej informacji. "Na początku po prostu kliknąłem" Utwórz katalog wirtualny "i uruchomiłem ponownie, ale ten sam alert pojawił się ponownie.

Więc wybrałem przycisk Pomoc z alertu. To prowadzi do this MSDN page, która proponuje około 2 tuziny rzeczy do sprawdzenia, z około o połowę mniejszą liczbą linków do innych artykułów. Czuję się teraz trochę jak Alicja w Krainie Czarów, idąc dalej przez króliczą dziurę.

Aktualizacja 2/3/2015: Moim obejściem podczas uruchamiania tego w lokalnej instancji IIS było uruchomienie Visual Studio jako administrator. Ostatecznie zmieniliśmy aplikację na IIS Express, a następnie zrezygnowaliśmy z aplikacji, by znaleźć inne rozwiązanie, które zbudował współpracownik. Ta decyzja nie miała nic wspólnego z tym problemem. Dziękuję wszystkim za opinie i pomysły.

3/7/2016 Aktualizacja: W tej chwili nie mogę powtórzyć tego problemu, ponieważ nie mamy już rozwiązania w stanie, w którym było, kiedy pracowałem nad nim w zeszłym roku. Byłbym wdzięczny, gdyby moderator mógł zamknąć to pytanie. Opcje zamknięcia tego nie są zgodne z moim bieżącym scenariuszem, ale być może ktoś inny znajdzie poniższe sugestie, jeśli napotka na ten scenariusz. Dziękuję wszystkim, którzy wnieśli sugestię.

+1

Czy uruchamiasz aplikację przez VS lub łącząc debugger z w3wp.exe ręcznie? Czy korzystasz z usług IIS lub Express? –

+1

Dzięki Paul. Wypróbowałem kilka rzeczy podążając za twoją sugestią i po prostu dołączyłem je do oryginalnego posta. Patrz wyżej. –

+1

Czy punkt przerwania wyświetla się jako czerwone kółko (bez wypełnienia) – Saravanan

Odpowiedz

1

Z moich dotychczasowych doświadczeń należy rozważyć te:

  • Sprawdź umieścić punkt przerwania w odpowiednim miejscu i używasz odpowiednią stronę lub kontrolera
  • prawym przyciskiem myszy na punkt przerwania = > Lokalizacja => Zaznacz "Zezwalaj na kod źródłowy inny niż pierwotna wersja". Jeśli zainstalowałeś resharper, to prawdopodobnie pomoże.

  • Jeśli dzwonisz przez Ajax połączenia Upewnij się, że nie błąd java-script na stronie (za błędy tego, czyli odłów js domyślne)

  • kilka razy to z powodu nie do końca budowy, więc czyszczenie rozwiązania (kliknij prawym przyciskiem myszy rozwiązanie i wybierz "clean solution" element), a następnie "Rebuild Solution".

  • Czasami jest tak, ponieważ możliwe jest wyłączenie opcji kompilacji dla niektórych bibliotek klasowych, więc w tej sytuacji musisz przebudować biblioteki klas wyłącznie .(Można go znaleźć się czekiem wybiera „Configuration Manager” pozycję z menu „Build”)

nadzieję, że te pomogą

1

Poznałem ten problem przed i rozwiązać go po tym, jak odbudować pakiet rozwiązań. (kliknij pakiet rozwiązania i uruchom ponownie)

+1

Możesz dekompilować plik .dll, aby sprawdzić, czy proces kompilacji jest normalny. – Clement

1

Oto lista pomysłów, które zachowam na taką okazję.

Sprawdź, gdzie znajduje się odwołanie do biblioteki dll i upewnij się, że jest to kod, który próbujesz usunąć.

Sprawdź, czy jesteś w odpowiednim trybie podczas budowania: Debuguj/Zwolnij, ponieważ mogą umieścić biblioteki DLL w różnych miejscach.

Czy jesteś podłączony do prawidłowego procesu?

Czy na stronie internetowej w IIS kod, nad którym pracujesz działa tak samo, jak kod działający w usługach IIS?

Przejdź do Debugowanie> Windows> Moduły i jeśli jest tam odpowiednia biblioteka dll, kliknij ją prawym przyciskiem myszy i załaduj symbole. Jeśli nie ma na liście, spróbuj uruchomić kod mimo to. Czasami nawet jeśli mówi, że punkt przerwania nie zostanie trafiony, to tylko dlatego, że biblioteka dll nie zostanie załadowana, dopóki nie wprowadzisz scenariusza, który jej potrzebuje. Wypróbuj scenariusz, który zależy od biblioteki dll, i może po prostu trafić punkt przerwania.

Uruchom ponownie przeglądarkę. Możesz mieć coś buforowanego ze starszej biblioteki dll.

2

Upewnij się, że:

  1. Narzędzia -> Opcje Debugger "Włącz Just My kod" jest zaznaczona
  2. Używasz aplikacji w trybie Debug, nie tryb wyzwalania migawki
  3. Rozwiązanie kompilacja jest aktualna.
+0

Dziękujemy! Uderzałem w punkty przerwań, ale nie w innych. – woodge

Powiązane problemy