我是否需要在ASP.NET MVC应用程序中定义一些特殊内容来从ASP.NET Web API读取传入响应?
从我的MVC应用程序,我使用System.Net.HttpClient
向ASP.NET Web API发出请求。 API接收请求并处理它并返回有效响应。但是,看起来,MVC应用程序永远不会得到响应。我在发出请求的行上有一个断点。控制流程在执行该行后永远不会返回。 MVC应用程序在很长一段时间后一直等待和超时。
但是,我可以确认API返回有效的Json响应。我尝试在Chrome Postman中撰写此请求,并看到API返回了有效的回复。
以下是我的MVC应用程序中向Web API发出请求的代码:
public async Task<R> PostAsJsonAsync<T, R>(string uri, T value)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(_baseUri);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = await client.PostAsJsonAsync(uri, value);
if (response.IsSuccessStatusCode) return await response.Content.ReadAsAsync<R>();
else return default(R);
}
}
过去,即在Web API 2之前,我已经让MVC应用程序与Web API通信,没有任何问题。我不知道我是否遗漏了Web API 2中引入的内容。
答案 0 :(得分:0)
我感觉你陷入了僵局。你在任何地方使用.Result
吗?您应该一直使用async
。我的意思是你的MVC操作方法也应该是async
方法,他们应该await
而不是.Result
。阅读Stephen Cleary的这篇日志文章了解更多信息。 http://blog.stephencleary.com/2012/07/dont-block-on-async-code.html