非常简单的MongoDB& ASP.Net网站设置挂起在Find()方法

时间:2015-08-13 10:03:41

标签: c# asp.net mongodb

我只是想在ASP.Net网站上找一个小的MongoDB示例,出于某种原因,当我在集合上调用Find()方法时,我没有得到任何回报。

我在默认端口的命令行窗口中运行该服务。如果我从另一个命令行窗口调用find方法,那么它可以正常工作:

working

这是我的控制器代码(我知道这不是很好的代码,我只是想让它运行起来):

code

当我在调试模式下运行网站时,它进入私有方法,连接正常......

connected successfully

但是当它遇到Find()方法时,它似乎永远挂起(我已经离开它好了5分钟)。我没有超时,错误,异常或任何事情。

我非常密切地关注了网站上的教程,但是对于接下来要尝试的内容一无所知。有人有任何想法吗?非常感谢,谢谢! (对不起,如果这是非常简单明了的事情!感觉可能就是这样)

1 个答案:

答案 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,并且通过其标识符更容易发现方法是同步还是异步。

详细了解异步操作with this official ASP.NET web site tutorial