ExecuteReaderAsync调用 - Web App挂起

时间:2014-07-28 22:06:40

标签: c# asp.net asynchronous webforms data-access

我试图修改现有的数据库调用,以便进行异步数据库调用。这是我第一次涉足异步数据库调用,因此我查看了this postthis post以及this MSDN article的前两部分。这是我提出的代码,类似于在第二篇文章的第二个答案中找到的代码:

public async Task<IEnumerable<Item>> GetDataAsync(int id)
{
    using (SqlConnection conn = new SqlConnection(oCSB.ConnectionString))
    {
        using (SqlCommand cmd = new SqlCommand("stored_procedure", conn))
        {
            cmd.CommandType = System.Data.CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("param", "value");

            await conn.OpenAsync();
            SqlDataReader reader = await cmd.ExecuteReaderAsync();
            return ReadItems(reader, id).ToList();
        }
    }
}

private IEnumerable<Item> ReadItems(SqlDataReader reader, long id)
{
    while (reader.Read())
    {
        var item = new Item(id);        
        yield return item;
    }
}

应用程序是一个Web窗体应用程序,调用是由一个jQuery ajax请求启动到aspx页面中的静态WebMethod,然后调用GetDataAsync方法。不幸的是,应用程序挂起在cmd.ExecuteReaderAsync调用上,没有异常抛出,我还没有找到原因。我已经在VS dev服务器和我的本地IIS 8上运行了它,但是我得到了相同的结果。我也尝试过修改它,以便在桌面上进行非常简单的选择。我也尝试根据我在MSDN或SO上遇到的其他帖子更改代码。有人知道什么可能导致它挂起ExecuteReaderAsync调用吗?

0 个答案:

没有答案