如何在.NET Standard类库中设置IActionResult?
.NET Standard 2.0类库中设置IAsyncActionFilter的context.Result解决方案
1. 安装依赖NuGet包
你缺少的Action结果类型都在Microsoft.AspNetCore.Mvc.Abstractions包中,这个包原生支持.NET Standard 2.0,直接在类库项目中安装对应2.x版本的包即可(2.x版本和.NET Standard 2.0兼容性最好,可避免后续和主项目的版本冲突)。
如果需要用到更多内置的结果处理工具,可额外安装Microsoft.AspNetCore.Mvc.Core包,仅设置返回结果只需要前者即可。
2. 赋值context.Result的实现方式
手动实例化结果对象(推荐,仅需Abstractions包)
不需要调用Ok()这类快捷方法,直接实例化对应结果类型赋值即可,示例代码如下:
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { // 模拟缓存命中逻辑 if (TryGetCache(out var cachedData)) { // 等价于Ok(cachedData),直接赋值即可短路请求 context.Result = new OkObjectResult(cachedData); return; } await next(); }
其他常见的结果类型可直接对应实例化:
- 无返回内容的200响应:
new OkResult() - 404响应:
new NotFoundResult() - 自定义状态码的对象返回:
new ObjectResult(yourData) { StatusCode = 201 }
内容的提问来源于stack exchange,提问作者ScubaSteve
相关产品推荐
相关产品推荐

