2

我拼命地試圖實現在VS 2017 RC3中調試MVC 6(Core 1.1)Web應用程序的所謂非常簡單的目標。正常調試不起作用,因爲VS總是超時嘗試附加到程序,正如我的VS 2017 always times out debugging an MVC Core website on IIS Express profile問題中所述。現在我堅持「無需調試就開始」,並嘗試附加到實際承載我的應用程序的任何過程。使用IIS Express配置文件調試MVC 6 wep應用程序必須附加什麼過程?

應用程序類型是一個控制檯應用程序,它啓動了Kestrel主機,但是這個控制檯應用程序沒有產生任何地方我可以找到的.exe。當然,我試圖附加到IIS Express,但使用它,我的斷點都沒有被擊中。我相信在這些情況下,IIS EXpress只是作爲我的MVC應用程序的實際控制檯應用程序的代理,所以也許我應該附加到實際的Web應用程序進程,但是到底什麼是該進程?

回答

7

您需要附加到dotnet.exe進程。你可能有多個dotnet.exe(特別是如果你同時運行一個.NET Core項目VS)。通常,當您在VS中按Ctrl + Shift + P時,它將是第一個dotnet.exe。

但是,您的症狀看起來像您的應用程序實際上並沒有啓動,IIS Express無法找到該進程。我將從檢查IIS Express相關事件的事件日誌開始,因爲IIS會記錄它啓動的應用程序的進程ID以及失敗(如果有)。

更好的調試方法可能是跳過IIS Express,直接從命令行啓動應用程序dotnet run。這樣你將在命令行窗口中看到輸出。您也可以使用以下方法從您的主要方法打印進程ID:

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

以便在需要時輕鬆找出需要附加的進程。

+0

好的,謝謝。我正在慢慢地獲得一些理由,但是當我嘗試重視正確的過程時,我得到'無法附加到過程。 Visual Studio遠程調試器(MSVSMON.EXE)啓動失敗。' – ProfK

+0

您是否正在遠程調試? – Pawel

+0

不,我正在調試到'dotnet'進程,但是當我添加一個外部工具命令來啓動'MSVSMON.EXE',並在連接之前執行該操作時,我的調試終於可以正常工作。謝謝你,帕維爾! – ProfK

相關問題