Asp.net mvc 向mvc Webapp的所有用户共享对象

Asp.net mvc 向mvc Webapp的所有用户共享对象,asp.net-mvc,Asp.net Mvc,我的web应用程序在数据库中准备一到两分钟特定的只读对象列表,只有在IIS启动时才准备一次。这不会再改变,除非管理员通过特定的URL触发重新创建 对象的界面如下所示: public interface IProductsRepository { IQueryable<Row1> ProductItmes { get; } IQueryable<Row2> ProductLegItems { get; } } 公共接口IProductsRepository

我的web应用程序在数据库中准备一到两分钟特定的只读对象列表,只有在IIS启动时才准备一次。这不会再改变,除非管理员通过特定的URL触发重新创建

对象的界面如下所示:

public interface IProductsRepository {
    IQueryable<Row1> ProductItmes { get; }
    IQueryable<Row2> ProductLegItems { get; }
}
公共接口IProductsRepository{
IQueryable ProductItmes{get;}
IQueryable ProductLegItems{get;}
}
我现在不确定我把对象放在哪里了,所以它可以从任何控制器访问。
我是否应该将load方法作为静态对象放到
受保护的void应用程序\u Start()
?最佳方法是什么?

这可能满足您的需求,也可能不满足您的需求,但Castle Windsor允许您指定一个组件(如数据存储库)将有多少实例。我个人在使用这个(生活方式而不是生活方式)时有一个输入错误,导致数据存储库在一篇文章之后持久化,而我没有初始化它


您需要在此处使用依赖项注入框架,以便可以实例化此框架并将其传递到所有控制器中。这并不是asp.net-mvc的现成功能,但您可以找到许多可以实现这一功能的选项,如castle windsor或autofac。您可以在应用程序上加载缓存。\u Start()

您可以将其存储在应用程序对象中,但应该将其注入控制器。您不应该直接引用应用程序对象,因为这会降低应用程序的可测试性。为此,我使用Ninject()