[英]How to return a list of objects in ASP.NET Web API async controller method
如何在ASP.NET Web API異步控制器方法中返回對象列表或在Task對象中包裝列表?
類:
public class SubscriberHistory
{
public string Date;
public string Message;
public SubscriberHistory(string Date, string Message)
{
this.Date = Date;
this.Message = Message;
}
}
控制器:
[HttpGet("[action]/{accountNumber}")]
public Task<SubscriberHistory> GetSubscriberHistory(string accountNumber)
{
SubscriberManager subsManager = new SubscriberManager();
return subsManager.GetSubscriberHistoryByAccountNumber(accountNumber);
}
控制器經理:
public async List<SubscriberHistory> GetSubscriberHistory()
{
List<SubscriberHistory> List = new List<SubscriberHistory>();
// HttpClient get data
return List; // ?
}
如果您沒有執行任何async
操作,則永遠不要從操作方法返回Task
:它沒用,並且還會給您的調用增加不必要的開銷。
要返回對象列表,只需聲明正確的返回類型:
[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;
}
如果要使用Async Controller,則需要更新代碼,如下所示:
[HttpGet("[action]/{accountNumber}")]
public async Task<IHttpActionResult> GetSubscriberHistory(string accountNumber)
{
SubscriberManager subsManager = new SubscriberManager();
return await subsManager.GetSubscriberHistoryByAccountNumber(accountNumber);
}
如果要使用異步控制器,則應在控制器功能中存在異步和等待。 謝謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.