【问题标题】:ASP.NET: Sharing HttpContext.Current.Cache between MVC and WebApi controllersASP.NET:在 MVC 和 WebApi 控制器之间共享 HttpContext.Current.Cache
【发布时间】:2017-07-16 10:33:48
【问题描述】:

我有一个同时具有 MVC 控制器和 WebApi 控制器的项目。我正在使用 System.Web.HttpContext.Current.Cache 来存储一些静态数据,因此不会针对每个请求从数据库中检索它。看起来 WebApi 控制器看不到 MVC 控制器缓存的数据。他们是否使用不同的 System.Web.HttpContext.Current.Cache 实例?

谢谢, 伯特·扬

【问题讨论】:

  • 为了记录,您永远不应该直接在 MVC/Web API 中引用静态 System.Web.HttpContext.Current 实例。您应该只使用传递给控制器​​/过滤器的包装 HttpContextBase 实例。不过,我不确定这是否能解决您的问题。
  • 谢谢。我进行了一些测试,这个缓存在 WebApi 和 MVC 控制器中可用,它们可以看到彼此的缓存项。我误解了。感谢您指出包装好的 HttpContextBase。出于兴趣:引用静态实例有什么危险?
  • 主要问题与引用任何静态方法时相同 - 紧耦合。例如,无法在单元测试中模拟静态 System.Web.HttpContext.Current 实例,但您可以模拟 HttpContextBase。更不用说,MVC 可能会改变一些通过包装器传递的值——如果你不引用它,你可能会在你的应用程序中引入一些细微的错误。

标签: .net asp.net-mvc caching asp.net-web-api


【解决方案1】:

我认为这个答案会对你有所帮助。 WebAPI HttpContext Cache - is it possible?

【讨论】:

    猜你喜欢
    • 2014-01-05
    • 2014-08-11
    • 2016-11-30
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 2011-12-19
    相关资源
    最近更新 更多