ASP.Net Core WebApi-存储来自ActionFilter的值以在控制器中访问

肯森

在ASP.Net Core WebApp中,我要使用ActionFilter并将信息从ActionFilter发送到应用到的控制器。

MVC

对于MVC,我可以这样做

动作过滤器

    public class TenantActionFilter : IActionFilter
    {
        public void OnActionExecuting(ActionExecutingContext context)
        {
            //Using some sneaky logic to determine current tenant from domain, not important for this example
            int tenantId = 1;
            Controller controller = (Controller)context.Controller;
            controller.ViewData["TenantId"] = tenantId;
        }
        public void OnActionExecuted(ActionExecutedContext context) { }
    }

控制者

    public class TestController : Controller
    {
        [ServiceFilter(typeof(TenantActionFilter))]
        public IActionResult Index()
        {
            int tenantId = ViewData["TenantId"];
            return View(tenantId);
        }
    }

它可以工作,我可以通过ViewData将数据传递回控制器-太好了。

WebApi

我想对WebApi控制器执行相同的操作。

actionFilter本身可以应用,运行等-但我无法写入ViewData,因为WebAPI继承自ControllerBase,而不是继承自Controller(例如MVC)。

与MVC一样,如何将数据从ActionFilter推送回调用的ControllerBase?

笔记

  • 使用了ASP.Net Core 2.2,但如果解决方案不能在所有.Net Core中使用,我会感到惊讶。
肯森

...所以我几乎在写完问题后就找到了答案,所以...

答案是HttpContext.Items集合

动作过滤器

    public class TenantActionFilter : IActionFilter
    {
        public void OnActionExecuting(ActionExecutingContext context)
        {
            int tenantId = 1;
            var controller = (ControllerBase)context.Controller;
            controller.HttpContext.Items.Add("TenantId", tenantId);
        }
        public void OnActionExecuted(ActionExecutedContext context) { }
    }

控制者

    public class TestApiController : ControllerBase
    {
        [ServiceFilter(typeof(TenantActionFilter))]
        public SomeClass Get()
        {
            int tenantId;
            if (!int.TryParse(HttpContext.Items["TenantId"].ToString(), out tenantId))
            {
                tenantId = -1;
            }
            return new SomeClass();
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在ASP.NET Core WebApi控制器中获取当前登录的用户

来自分类Dev

从 Ionic 访问 ASP.NET Core WebApi 时出错

来自分类Dev

asp.net core 1.0在webapi中获取Windows身份

来自分类Dev

IFormFile在Asp.Net Core WebAPI中始终为空

来自分类Dev

在ASP.NET Core WebAPI中获取OData计数

来自分类Dev

asp.net core webapi中的一对多关系

来自分类Dev

如何将日志从Asp Net Core WebApi存储到Azure表存储中?

来自分类Dev

Swagger UI 无法显示来自 ASP.net Core WebAPI 的正确响应

来自分类Dev

在ASP.Net Core MVC控制器中访问提交按钮的数据属性?

来自分类Dev

IIS 7.5中的ASP.NET Core WebAPI 500内部错误

来自分类Dev

ASP.NET Core WebAPI中是否可以替代批处理请求(MapHttpBatchRoute)?

来自分类Dev

如何在ASP.NET Core中创建多个WebApi委托

来自分类Dev

同一解决方案中的ASP.NET Core 5 MVC / RazorPages和WebAPI项目

来自分类Dev

在Asp.net Core 5 WebAPI中获取SqlException和ObjectDisposedException

来自分类Dev

ASP.NET Core WebAPI 中的 AAD V2 和 JwtBearer

来自分类Dev

在 Asp.Net WebApi Core 2.0 中获取客户端的唯一标识符?

来自分类Dev

如何在asp.net core中实现经典的webapi 2路由

来自分类Dev

ReactSample和AsP.NET Core WebApi之间的http连接

来自分类Dev

Blazor无法连接到ASP.NET Core WebApi(CROS)

来自分类Dev

Appveyoyr 无法构建 ASP.NET Core WebApi 项目

来自分类Dev

Asp.Net Core WebApi:创建单元测试

来自分类Dev

ASP.NET Core WebAPI:内存缓存与响应缓存

来自分类Dev

如何获取ASP.NET Core MVC控制器中输入按钮的值?

来自分类Dev

当发布到ASP.NET Core中的控制器时,所有值均为null

来自分类Dev

ASP.NET WebApi-一个控制器中的多个GET操作

来自分类Dev

ASP.Net WebAPI 中一个控制器中的多种方法

来自分类Dev

在 .net core webAPI 中启用 CORS

来自分类Dev

WebApi无法在ASP.Net中工作

来自分类Dev

使用标签助手调用控制器,包括来自 asp.net core mvc 中搜索栏的数据

Related 相关文章

  1. 1

    如何在ASP.NET Core WebApi控制器中获取当前登录的用户

  2. 2

    从 Ionic 访问 ASP.NET Core WebApi 时出错

  3. 3

    asp.net core 1.0在webapi中获取Windows身份

  4. 4

    IFormFile在Asp.Net Core WebAPI中始终为空

  5. 5

    在ASP.NET Core WebAPI中获取OData计数

  6. 6

    asp.net core webapi中的一对多关系

  7. 7

    如何将日志从Asp Net Core WebApi存储到Azure表存储中?

  8. 8

    Swagger UI 无法显示来自 ASP.net Core WebAPI 的正确响应

  9. 9

    在ASP.Net Core MVC控制器中访问提交按钮的数据属性?

  10. 10

    IIS 7.5中的ASP.NET Core WebAPI 500内部错误

  11. 11

    ASP.NET Core WebAPI中是否可以替代批处理请求(MapHttpBatchRoute)?

  12. 12

    如何在ASP.NET Core中创建多个WebApi委托

  13. 13

    同一解决方案中的ASP.NET Core 5 MVC / RazorPages和WebAPI项目

  14. 14

    在Asp.net Core 5 WebAPI中获取SqlException和ObjectDisposedException

  15. 15

    ASP.NET Core WebAPI 中的 AAD V2 和 JwtBearer

  16. 16

    在 Asp.Net WebApi Core 2.0 中获取客户端的唯一标识符?

  17. 17

    如何在asp.net core中实现经典的webapi 2路由

  18. 18

    ReactSample和AsP.NET Core WebApi之间的http连接

  19. 19

    Blazor无法连接到ASP.NET Core WebApi(CROS)

  20. 20

    Appveyoyr 无法构建 ASP.NET Core WebApi 项目

  21. 21

    Asp.Net Core WebApi:创建单元测试

  22. 22

    ASP.NET Core WebAPI:内存缓存与响应缓存

  23. 23

    如何获取ASP.NET Core MVC控制器中输入按钮的值?

  24. 24

    当发布到ASP.NET Core中的控制器时,所有值均为null

  25. 25

    ASP.NET WebApi-一个控制器中的多个GET操作

  26. 26

    ASP.Net WebAPI 中一个控制器中的多种方法

  27. 27

    在 .net core webAPI 中启用 CORS

  28. 28

    WebApi无法在ASP.Net中工作

  29. 29

    使用标签助手调用控制器,包括来自 asp.net core mvc 中搜索栏的数据

热门标签

归档