gpt4 book ai didi

c# - ASP.NET MVC API 库

转载 作者:太空狗 更新时间:2023-10-30 01:29:31 24 4
gpt4 key购买 nike

使用类库从 Web API 获取数据并在同一解决方案的 MVC 项目中引用它。

在浏览器中加载索引页面时不断出现错误,提示我需要用 <%@ Page Async="true" %> 标记页面或返回任务。但是 Controller 方法不允许我使用 public async Task MakeCall(string url)说找不到类型或命名空间任务。

库类:

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;
}
}
}

在我使用的 Controller 中:

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 触发后遗忘方法。通过确保包含必要的命名空间(例如 using 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);

}
}

关于c# - ASP.NET MVC API 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51518528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com