【发布时间】:2015-07-26 13:53:09
【问题描述】:
我正在制作概念验证原型。
我有 Asp.Net C# web 表单(Visual Studio 2013,.Net 4.5)页面。单击按钮时,我会执行以下操作:
List<Blog> blogs = null;
protected void btnLoadData_Click(object sender, EventArgs e)
{
//...;
switch (int.Parse(rblDataSource.SelectedValue))
{
//...;
case 4:
RunAsyncBlogs().Wait();
break;
default:
blogs = localGetter.GetBlogs();
break;
}
//...;
}
RunAsyncBlogs 看起来像这样:
static async Task RunAsyncBlogs()
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost/wapiDemo/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// HTTP GET
HttpResponseMessage response = await client.GetAsync("api/Blogs");
if (response.IsSuccessStatusCode)
{
List<Blog> thisBlogList = await response.Content.ReadAsAsync<List<Blog>>();
var cnt = thisBlogList.Count();
}
}
}
代码在 response = await client.GetAsync 调用处停止。当我说它停止时,调试器的行为就像请求已经结束,但浏览器仍在等待。
如果我运行一个控制台应用程序(我将 RunAsync() 方法复制并粘贴到其中),它以相同的方式调用 Web API,我会得到我的数据。所以,我相信 Web API 应用会按预期响应。
【问题讨论】:
标签: c# asp.net asp.net-web-api async-await task-parallel-library