【发布时间】:2021-09-20 20:43:30
【问题描述】:
我真的很困惑 .Netcore 什么通常应该返回到队列(消息代理),我有一个类
public Task<IActionResult> GetMerchantPlatform(int merchantID) {
try
{
var mrchantInfo = dbContext.MerchantPlatforms.Where(s => s.Id == merchantID);
return Task.FromResult(mrchantInfo);
}
catch (Exception ex)
{
throw ex;
}
}
它给了我一个错误:严重性代码描述项目文件行抑制状态
错误 CS0029 无法将类型 'System.Threading.Tasks.Task
什么时候应该返回 Iactionresult?什么时候应该返回类?为什么会出现上述错误?
【问题讨论】:
-
不相关,但
throw ex;是一种反模式。如果您不以任何方式处理异常,只需完全删除 try/catch。如果您正在处理异常并想重新抛出它,只需使用throw;。您目前正在做的是从原始异常中删除有用的信息。 -
in catch
return=Task.FromResult(0);我希望你写的代码能工作 -
@EminNiftiyev:不,语法错误在这里不太可能有帮助。 (您不能为
return关键字分配值。)此外,catch块中不会发生错误。抛出异常始终是方法的有效退出策略。 -
@David 感谢您的评论,我已在我的代码中删除了它,您对返回类型有任何想法吗?
-
阅读错误消息并意识到你在
mrchantInfo中得到的只是一个IQueryable<T>- 你甚至没有使查询进入数据库。您可能想要做一些事情来实现方法中的结果,例如调用SingleOrDefault或ToList,或类似的东西(实际上可能是async变体)来实际拥有一个MerchantPlatform或将其设置在局部变量中,然后再担心返回。
标签: c# asp.net-core