2

필자는 VS 2017 RC3에서 MVC 6 (Core 1.1) 웹 응용 프로그램을 디버깅하는 데 매우 간단한 목표를 달성하려고 필사적으로 노력하고 있습니다. 내 VS 2017 always times out debugging an MVC Core website on IIS Express profile 질문에 대한 질문에 VS가 항상 프로그램에 연결하려고하면 시간이 초과되어 정상적인 디버깅이 작동하지 않습니다. 이제는 "디버깅하지 않고 시작"하고 실제로 앱을 호스팅하는 모든 프로세스에 연결하려고합니다.IIS Express 프로필을 사용하여 MVC 6 wep 앱을 디버깅하려면 어떤 프로세스를 사용해야합니까?

앱 유형은 Kestrel 호스트를 시작하는 콘솔 애플리케이션입니다. 그러나이 콘솔 앱은 어디서나 찾을 수있는 .exe을 생성하지 않습니다. 물론 IIS Express에 연결하려고 시도했지만 그 중 하나를 사용하여 중단 점 중 하나도 충돌하지 않습니다. 나는이 시나리오를 믿는다. IIS EXpress는 내 MVC 앱인 실제 콘솔 앱의 프록시 역할을하기 때문에 실제 웹 앱 프로세스에 연결해야하지만, 그 프로세스는 지옥의 이름이 무엇일까요?

답변

7

dotnet.exe 프로세스에 연결해야합니다. 닷넷 코어 프로젝트 VS를 동시에 실행하는 경우 여러 개의 dotnet.exe가있을 수 있습니다. 일반적으로 VS에서 Ctrl + Shift + P를 누르면 첫 번째 dotnet.exe가됩니다.

그러나 응용 프로그램이 실제로 시작되지 않고 IIS Express에서 프로세스를 찾을 수없는 것처럼 보이는 증상이 나타납니다. IIS가 시작한 응용 프로그램의 프로세스 ID와 실패한 경우 IIS가 기록 할 때 IIS Express 관련 이벤트의 이벤트 로그를 확인하는 것으로 시작합니다.

이것을 디버깅하는 더 좋은 방법은 IIS Express를 전혀 건너 뛰고 dotnet run과 함께 명령 줄에서 직접 응용 프로그램을 시작하는 것일 수 있습니다. 이렇게하면 명령 줄 창에 출력이 표시됩니다. 당신은 또한 당신의 Main 메서드에서 프로세스 ID를 인쇄 할 수 있습니다 : 그것은 쉬운 과정은 당신이 그것을 필요로하는 경우에 첨부 알아낼

Console.WriteLine("Process ID: " + System.Diagnostics.Process.GetCurrentProcess().Id); 

있도록.

+0

좋습니다. 감사합니다. 나는 천천히 약간의 근거를 얻고 있지만 올바른 프로세스에 연결하려고하면 '프로세스에 연결할 수 없습니다. Visual Studio 원격 디버거 (MSVSMON.EXE)를 시작하지 못했습니다. ' – ProfK

+0

원격 디버깅 하시겠습니까? – Pawel

+0

아니요,'dotnet' 프로세스로 디버깅 중이지만 MSVSMON.EXE를 시작하기 위해 외부 도구 명령을 추가하고 연결하기 전에 디버깅이 마침내 작동합니다. 고마워, 파웰! – ProfK