Próbowałem dodać

System.Diagnostics.Debugger.Launch();

Do mojego kodu witryny sieci Web IIS ASP.NET. Uruchamiam aplikację jako standardowy użytkownik AppPoolIdentity i pojawia się okno debugowania, w którym mogę dołączyć VS2010 i debugować proces. Moje pytanie brzmi: co pozwala użytkownikowi AppPoolIdentity (wirtualnemu) na interakcję z moim pulpitem? Zwykle nie jest to dozwolone. Zostało to przetestowane w systemie Windows 7 x64.

Dzięki!

1
Haukman 13 czerwiec 2011, 23:24

2 odpowiedzi

Najlepsza odpowiedź

W przypadku wystąpienia nieobsłużonego wyjątku rejestr jest sprawdzany, aby zobaczyć, który debuger jest wymieniony.

Używają systemów 32-bitowych: KEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger

Może to być również źródłem luki w zabezpieczeniach — zobacz http://support.microsoft.com/kb/923827

Aby uzyskać szczegółowe informacje na temat klucza rejestru AEDebug zobacz: http://msdn.microsoft.com/en-us/library/5hs4b7a6.aspx

Tożsamość puli aplikacji nie wchodzi w interakcję z komputerem — jest żądanie debugera. Nic nie wchodzi w interakcję, dopóki nie zdecydujesz się na debugowanie, wtedy debuger jest uruchamiany i dołączasz do tego procesu.

1
Adam Tuliper - MSFT 14 czerwiec 2011, 00:35
To bardzo dobra informacja. Ale jedno pytanie pozostaje, kto znajduje „moją” sesję użytkownika? Co, jeśli dwóch użytkowników jest zalogowanych, obaj otrzymają monit debugera JIT?
 – 
Haukman
14 czerwiec 2011, 01:45
1
Wierzę, że sesja „konsoli” zawsze to otrzyma (sesja 0). Jeśli użytkownik nie jest zalogowany, pojawia się określony komunikat, z którym się nie powiedzie (nie można uruchomić debugera, ponieważ żaden użytkownik nie jest zalogowany).
 – 
Adam Tuliper - MSFT
14 czerwiec 2011, 02:43
To prawdopodobnie ma sens. Dzięki, odpowiedź jest twoja!
 – 
Haukman
14 czerwiec 2011, 03:17

Najłatwiej jest w VS dołączyć do procesu, wybrać IIS. Możesz ustawić punkt przerwania w swojej aplikacji i zatrzyma się w punkcie przerwania. Zatrzyma też każdą stronę internetową na twoim komputerze!!!!

Inną rzeczą, którą możesz zrobić, to ustawić tryb debugowania w swojej aplikacji. Domyślnie jest to tylko mój kod. Powiedz mu, żeby debugował też kod natywny.

Tu było takie pytanie jak twoje Jak uruchomić aspnet_wp.exe bez uruchamiania zdarzenia Application_Start

0
Community 23 maj 2017, 13:34
Moje pytanie nie brzmiało jak to zrobić (już to robię), ale raczej dlaczego to działa, dlaczego Windows na to pozwala, kiedy spodziewałbym się, że użytkownik ASPNET nie będzie miał dostępu do mojego pulpitu.
 – 
Haukman
13 czerwiec 2011, 23:46