ApiControllerAttribute报错:如何让prepareAsync不被识别为Action方法
解决办法
方法1:修改方法访问修饰符
把prepareAsync的访问修饰符从public改成protected,ASP.NET Core不会将protected方法识别为Action方法,同时子类(包括测试用的Mock类)依然能重写这个方法:
protected virtual async Task prepareAsync(){ }
方法2:使用[NonAction]特性标记
给prepareAsync添加[NonAction]特性,明确告知框架这是辅助方法而非Action方法,即使是public修饰符也不会触发路由检查:
[NonAction] public virtual async Task prepareAsync(){ }
方法3:提取到辅助类(可选)
如果想让控制器职责更单一,也可以把prepareAsync的逻辑移到单独的辅助类或服务类中,通过依赖注入让控制器调用。测试时直接Mock这个服务类即可,但这种方式不如前两种直接高效。
内容的提问来源于stack exchange,提问作者m341
相关产品推荐
相关产品推荐

