在RoleEntryPoint OnStart中预加载变量

时间:2015-08-22 13:34:29

标签: asp.net azure asp.net-web-api owin azure-web-roles

我需要从数据库中下载一些表,并使用这些信息创建静态列表类。我可以在owin启动或RoleEntryPoint onStart中执行此操作。

我尝试在RoleEntryPoint onStart中预加载列表,但是,这些类似乎在运行时中不可用,而是再次创建它们。

如果我在Owin Startup中预加载它们,一切正常。

但是,我需要大约10秒钟来预加载这些列表,并且当owin启动正在执行时,Onstart已经执行,因此Web角色可用于接受请求。我不想要这个。我不希望Web角色切换到就绪状态,直到所有列表都被预加载。

似乎在RoleEntryPoint中创建的任何实例在webrole运行时本身都不可用。

有没有办法在OnStart中实现预加载实例并且能够在运行时使用它们?

1 个答案:

答案 0 :(得分:0)

RoleEntryPoint是满足您需求的最佳方式。

在WebRole.cs中使用单例模式定义静态列表变量。 实现异步存储库或私有方法来填充它们。您不必在应用启动时填充静态列表。根据单身模式,他们将在第一次请求时填写。

我在WCF服务启动过程的静态存储库实例初始化中使用相同的方法。 祝你好运