我只是想在ASP.Net网站上找一个小的MongoDB示例,出于某种原因,当我在集合上调用Find()方法时,我没有得到任何回报。
我在默认端口的命令行窗口中运行该服务。如果我从另一个命令行窗口调用find方法,那么它可以正常工作:
这是我的控制器代码(我知道这不是很好的代码,我只是想让它运行起来):
当我在调试模式下运行网站时,它进入私有方法,连接正常......
但是当它遇到Find()方法时,它似乎永远挂起(我已经离开它好了5分钟)。我没有超时,错误,异常或任何事情。
我非常密切地关注了网站上的教程,但是对于接下来要尝试的内容一无所知。有人有任何想法吗?非常感谢,谢谢! (对不起,如果这是非常简单明了的事情!感觉可能就是这样)
答案 0 :(得分:3)
您似乎正在实施同步操作并在调用异步FindPlayers
方法时阻止它。
您应该将控制器操作的签名替换为public Task<ActionResult> Index()
并将其代码重构为:
public async Task<ActionResult> Index()
{
// This will free up request thread and it will return to the thread
// pool until FindPlayer() Task ends, and it will reclaim a thread
// to continue with returning the view.
await FindPlayers();
return View();
}
最后,您应该将方法重命名为FindPlayersAsync
,因为异步方法的约定是[Name of method]Async
,并且通过其标识符更容易发现方法是同步还是异步。