我真的很困惑,在.Netcore中,通常什么應該回傳到佇列(messagebroker),我有一個類
。 public Task< IActionResult> GetMerchantPlatform(span class="hljs-built_in">int merchantID){
try
{
var mrchantInfo = dbContext.MerchantPlatforms.Where(s => s.Id == merchantID) 。
return Task.FromResult(mrchantInfo)。
}
catch (Exception ex)
{
throw ex;
}
}
它給了我一個錯誤:Severity Code Description Project File Line Suppression State Error CS0029 Cannot implicitly convert type 'System.Threading.Tasks.Task<System.Linq.IQueryable<Models.MerchantPlatform>>' to 'System.Threading.Tasks.Task<Microsoft.AspNetCore.Mvc.IActionResult>'
什么時候我應該回傳Iactionresult?什么時候我應該回傳類?為什么我得到上述錯誤?uj5u.com熱心網友回復:
通過使用ControllerBase類,你必須回傳一個IActionResult或者一個Task<IActionResult>。有很多預定義的結果物件可用,你可以從中選擇,因為結果由多個資訊組成,必須由你來定義。首先是應該回傳的HTTP狀態代碼,在此基礎上,你可能需要回傳一個正文和/或一些標題條目。
如果你的方法是在ControllerBase類中,這個類中已經有一些輔助方法,如Ok(), BadRequest(), Forbid(), NoContent(), NotFound()等等。所有這些都有幾個多載,這取決于它們通常的使用情況。
所以在你的案例中,你可能要寫這樣的東西:
public async Task< IActionResult> GetMerchantPlatform(int merchantID)。
{
try
{
var mrchantInfo = await dbContext.MerchantPlatforms
.Where(s => s.Id == merchantID)
.ToListAsync()。
return Ok(mrchantInfo)。
}
catch (Exception ex)
{
return BadRequest(ex);
}
}
請注意,不是每個函式都需要try/catch。為此,你可以注冊你自己撰寫的中間件,它可以在每個動作周圍放置這樣一個塊,并根據你的需要進行相應的操作。但這是另一個問題或搜索的內容
。如果你真的想在你的方法中只回傳內容,你應該考慮使用ApiControllerAttribute。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/328656.html
標籤:
上一篇:如何在Razor視圖中使用Form進入foreach回圈
下一篇:為什么JsonResult需要同時實作IActionResult和IStatusCodeActionResult?
