2017-02-25 79 views
0

我有一个既有MVC控制器又有WebApi控制器的项目。我使用System.Web.HttpContext.Current.Cache来存储一些静态数据,因此不会从每个请求的数据库中检索它。它看起来像WebApi控制器没有看到由MVC控制器缓存的数据。他们是否使用System.Web.HttpContext.Current.Cache的不同实例?ASP.NET:在MVC和WebApi控制器之间共享HttpContext.Current.Cache

谢谢, 伯特 - 扬

+0

为了记录,您不应该直接在MVC/Web API中引用静态'System.Web.HttpContext.Current'实例。您应该只使用传递到控制器/过滤器中的包装的“HttpContextBase”实例。不过,我不确定这是否能解决您的问题。 – NightOwl888

+0

谢谢。我运行了一些测试,这个缓存在WebApi和MVC控制器中可用,他们可以看到对方的缓存项目。我误解了。感谢您指出包装的HttpContextBase。出于兴趣:引用静态实例有什么危险? –

+0

主要问题与您引用任何静态方法 - 紧密耦合相同。例如,在单元测试中没有办法模拟静态的'System.Web.HttpContext.Current'实例,但是你可以*模拟'HttpContextBase'。更不用说,MVC *可能会改变一些通过包装器传递的值 - 如果你没有引用它,你可能会在你的应用程序中引入微妙的错误。 – NightOwl888

回答

相关问题