我是否需要在ASP.NET MVC应用程序中执行一些特殊操作才能从Web API 2应用程序中读取Json响应?

时间:2014-07-11 21:20:11

标签: asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api asp.net-web-api2

我是否需要在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中引入的内容。

1 个答案:

答案 0 :(得分:0)

我感觉你陷入了僵局。你在任何地方使用.Result吗?您应该一直使用async。我的意思是你的MVC操作方法也应该是async方法,他们应该await而不是.Result。阅读Stephen Cleary的这篇日志文章了解更多信息。 http://blog.stephencleary.com/2012/07/dont-block-on-async-code.html