调试异步 ASP.NET WebAPI 控制器在“任务”窗口中显示“没有要显示的任务”

Posted

技术标签:

【中文标题】调试异步 ASP.NET WebAPI 控制器在“任务”窗口中显示“没有要显示的任务”【英文标题】:Debugging asynchronous ASP.NET WebAPI controller shows "No tasks to display" in Tasks window 【发布时间】:2015-02-16 02:16:35 【问题描述】:

我正在尝试使用“任务”窗口(调试 -> Windows -> 任务)调试一些异步代码,但是当我使用断点在异步方法中的一行中断时,任务窗口显示“没有要显示的任务” .

我的项目是在 Visual Studio 2013 的 Windows 8.1 机器上的 IIS Express 中运行的 WebAPI 项目。

我见过this question 非常相似,但这里给出的答案是它需要在 Windows 8.1 机器上而不是 Windows 7 上运行...但我 am 运行 8.1 !

我已经尝试创建一个基本的控制台应用程序,设置一个非常简单的异步应用程序并对其进行调试,它在那里工作得非常好......那我做错了什么?为什么它在我的 WebAPI 项目中不起作用?

【问题讨论】:

我在使用 OWIN 自托管应用程序时遇到了同样的问题。你找到解决方案了吗? @Miral:不,抱歉...我想我最终只是找到了我正在寻找的错误并继续前进...如果我让它工作起来会更容易。 是的,我也是这样做的(我遇到了一个死锁,在没有提示的情况下追踪它总是很有趣)。但希望这能奏效。 我想知道这是否可能。见link 请记住,async/await 在控制台应用程序中的行为与在 Web API 中的行为不同(控制台应用程序中没有同步上下文),因此这不是一个真正有效的比较。 (这是 async/await 中的主要“陷阱”之一)。你能发布有问题的代码吗? 【参考方案1】:

使用Visual Studio 2017 15.6或以上版本可以解决这个问题。

此问题是一个已知问题,可在此处找到on Developer Community 状态标记确认 该问题已在 Visual Studio 2017 15.6 预览版 1 和 Visual Studio 2017 15.6 中得到修复。我试图在官方发布说明和他们的官方博客中找到解决此问题的官方公告,但没有找到。

Visual Studio Blog, Official Release Notes

使用最新版本,这应该不再是问题。

【讨论】:

以上是关于调试异步 ASP.NET WebAPI 控制器在“任务”窗口中显示“没有要显示的任务”的主要内容,如果未能解决你的问题,请参考以下文章

.NET异步性能测试(ASP.NET MVC WebAPI异步方法)

asp.net 如何变成 MVC 或 WebApi?

我需要在启动时在 ASP .Net Core 3.1 Web API 中执行异步方法

如何在 asp.net 核心 webapi 控制器中读取请求正文?

在 ASP.NET 中使用 WebAPI 或 MVC 返回 JSON

ASP.NET WebApi 从入门到"放弃"系列---WebApi 请求路由