C# ASP.NET MVC API库
使用类库从web API获取数据,并在同一解决方案中的MVC项目中引用它 在浏览器中加载索引页时不断出现错误,表示我需要用C# ASP.NET MVC API库,c#,asp.net-mvc,asp.net-web-api,C#,Asp.net Mvc,Asp.net Web Api,使用类库从web API获取数据,并在同一解决方案中的MVC项目中引用它 在浏览器中加载索引页时不断出现错误,表示我需要用标记页面或返回任务。但是控制器方法不允许我使用公共异步任务MakeCall(stringurl)表示找不到类型或命名空间任务 图书馆类别: public class GetObject { public async Task GetRequest(string url) { using (HttpClient client = new Http
标记页面或返回任务。但是控制器方法不允许我使用公共异步任务MakeCall(stringurl)
表示找不到类型或命名空间任务
图书馆类别:
public class GetObject
{
public async Task GetRequest(string url)
{
using (HttpClient client = new HttpClient())
using (HttpResponseMessage response = await client.GetAsync(url))
using (HttpContent content = response.Content)
{
string data = await content.ReadAsStringAsync();
HttpContentHeaders headers = content.Headers;
}
}
}
在我使用的控制器中:
public class HomeController : Controller
{
public ActionResult Index()
{
MakeCall("http://api.openweathermap.org/data/2.5/weather?q=London&APPID=[APIKEY]");
return View();
}
public async void MakeCall(string url)
{
GetObject newCall = new GetObject();
await newCall.GetRequest(url);
}
}
避免
async void
fire和forget方法。通过确保使用System.Threading.Tasks包含必要的名称空间(如),使代码始终保持异步代码>
比如说
//...other using
using System.Threading.Tasks;
public class HomeController : Controller {
public async Task<ActionResult> Index() {
await MakeCall("http://api.openweathermap.org/data/2.5/weather?q=London&APPID=[APIKEY]");
return View();
}
public async Task MakeCall(string url) {
GetObject newCall = new GetObject();
await newCall.GetRequest(url);
}
}
/…其他使用
使用System.Threading.Tasks;
公共类HomeController:控制器{
公共异步任务索引(){
等待MakeCall(“http://api.openweathermap.org/data/2.5/weather?q=London&APPID=[APIKEY]”;
返回视图();
}
公共异步任务MakeCall(字符串url){
GetObject newCall=新建GetObject();
等待newCall.GetRequest(url);
}
}
永远不要从异步方法返回任务返回void。