您应该使用新的 HttpClient 来使用您的 HTTP API。我还可以建议您使您的呼叫完全异步。由于 ASP.NET MVC 控制器动作支持基于任务的异步编程模型,它非常强大和简单。
这是一个过于简化的例子。以下代码是示例请求的帮助程序类:
public class CarRESTService {
readonly string uri = "http://localhost:2236/api/cars";
public async Task<List<Car>> GetCarsAsync() {
using (HttpClient httpClient = new HttpClient()) {
return JsonConvert.DeserializeObject<List<Car>>(
await httpClient.GetStringAsync(uri)
);
}
}
}
然后,我可以通过我的 MVC 控制器异步使用它,如下所示:
public class HomeController : Controller {
private CarRESTService service = new CarRESTService();
public async Task<ActionResult> Index() {
return View("index",
await service.GetCarsAsync()
);
}
}
您可以查看下面的帖子,了解使用 ASP.NET MVC 进行异步 I/O 操作的效果:
我对 C# 5.0 和 ASP.NET MVC Web 应用程序中基于任务的异步编程的看法