gpt4 book ai didi

c# - 如何在 ASP.NET Web API 异步 Controller 方法中返回对象列表

转载 作者:行者123 更新时间:2023-11-30 15:21:34 24 4
gpt4 key购买 nike

如何在 ASP.NET Web API 异步 Controller 方法中返回对象列表或将列表包装在 Task 对象中?

类:

public class SubscriberHistory
{
public string Date;
public string Message;

public SubscriberHistory(string Date, string Message)
{
this.Date = Date;
this.Message = Message;
}
}

Controller :

[HttpGet("[action]/{accountNumber}")]
public Task<SubscriberHistory> GetSubscriberHistory(string accountNumber)
{
SubscriberManager subsManager = new SubscriberManager();
return subsManager.GetSubscriberHistoryByAccountNumber(accountNumber);
}

Controller 管理器:

public async List<SubscriberHistory> GetSubscriberHistory()
{
List<SubscriberHistory> List = new List<SubscriberHistory>();
// HttpClient get data
return List; // ?
}

最佳答案

永远不要返回 Task如果您没有执行任何操作,则来自操作方法async : 它没有用,还会给您的通话增加不必要的开销。

要返回对象列表,只需声明正确的返回类型:

[HttpGet("[action]/{accountNumber}")]
public List<SubscriberHistory> GetSubscriberHistory(string accountNumber)
{
SubscriberManager subsManager = new SubscriberManager();
return subsManager.GetSubscriberHistoryByAccountNumber(accountNumber);
}

相反,如果您想异步执行此操作,则必须返回 Task<T>并等待结果:

[HttpGet("[action]/{accountNumber}")]
public async Task<List<SubscriberHistory>> GetSubscriberHistory(string accountNumber)
{
SubscriberManager subsManager = new SubscriberManager();
return await subsManager.GetSubscriberHistoryByAccountNumber(accountNumber);
}

在你的经理中:

public async Task<List<SubscriberHistory>> GetSubscriberHistory()
{
List<SubscriberHistory> list = new List<SubscriberHistory>();
var result = await client.GetAsync("http://myhost/mypath");
//Your code here
return list;
}

关于c# - 如何在 ASP.NET Web API 异步 Controller 方法中返回对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37322424/

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