我应该将Visual Studio调试器附加到哪个进程来调试Kestrel应用程序?

7

我打开了命令行并使用dotnet run命令运行我的应用程序。这将启动Kestrel并启动我的应用程序。

我应该如何识别要附加调试器的进程,以便我可以调试Kestrel托管的网站?

我特别需要能够以这种方式进行操作-这意味着我不能使用标准的F5调试快捷键。

3个回答

7

很遗憾,目前使用Visual Studio或.NET Core提供的工具无法确定。不过请注意,社区已经在这里请求此功能,所以您可以在那里发表您的意见。

目前最好的选择是按照步骤查找给定应用程序端口的进程ID

  1. 运行netstat -abon | findStr "127.0.0.1:{PORTNUMBER}"
  2. 找到上面返回的进程的ID和名称为dotnet.exe(为了更快的查找)

如果您感到有冒险精神,可以使用类似于此PowerShell的内容,它会直接返回端口号:

 $string = netstat -abon | findStr "127.0.0.1:{PORTNUMBER}"; $results = $string.split(' '); $results[$results.length - 1]

2

1
@kape123 这不是我的想法,但很高兴分享它 - (我对其他答案不能立即为我工作感到恼火,并发布此内容以帮助他人)。另一个建议是最新的进程在列表顶部,因此应该将其附加到(我猜这会转化为某个 PowerShell 命令,有人会尽快发布 :D) - Ruben Bartelink
1
这真的很有帮助。此外,如果您正在使用2017年版本,如果您在“dotnet”上过滤列表并按ID排序,则最高的那个,即列表中的第一个,可能是您想要的。 - Marnee KG7SIO

1

虽然这个问题比较老,但是我们有一个解决方案。

从零开始,使用$ dotnet run将创建一个Kestrel的单实例,所以很容易从Visual Studio进行附加调试。

然而,运行$ dotnet build && dotnet run将创建一个构建服务器实例和一个Kestrel实例。现在很难知道要附加到哪个dotnet进程。此外,多次运行此命令可能会创建额外的进程。

我们的解决方案是使用$ dotnet build && dotnet build-server shutdown && dotnet run。这样,在构建之后停止构建服务器,现在只有一个dotnet进程可以附加到。

这里可能会有其他解决方案: https://github.com/dotnet/cli/issues/9481


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接