从角色入口点开始加载DataCache

时间:2012-02-17 03:05:21

标签: c# caching azure

我想从我的Role Entry StartUp例程访问我的Windows Azure数据缓存。但是我一直收到这个错误:

{“ErrorCode:SubStatus:服务器集合不能为空。”}

然而,当我在Controller类中执行相同操作时,它会加载数据缓存,我可以继续使用它。

在我的应用程序启动之前,我必须做什么才能访问Data Entry类?

或者我无法在角色启动中访问缓存?

干杯

2 个答案:

答案 0 :(得分:2)

从Azure SDK 1.3开始,有一个重大变化 - 完整IIS模式。阅读this blog post以完全了解完整的IIS及其内容。

简而言之 - 您的RoleEntryPoint后代(正在执行OnStart方法)存在于另一个AppDomain(并实际处理 - WaIISHost.exe),而您的实际Web应用程序只存在于IIS(w3wp.exe)中。这就是为什么在OnStart()中无法做任何会影响您的Web应用程序或能够直接读取您的web.config的原因。

如果您确实在OnStart中读取Azure数据缓存以为Web应用程序执行一些数据预加载,那么只需在Global.asax的Application_Start()事件处理程序中执行。

如果您需要在OnStart中读取Azure数据缓存以了解RoleEntryPoint的特定原因,则必须从web.config加载配置。 Web.config放在" ./ bin / web.config"相对于您的AppRoot文件夹。 (当您使用带有完整IIS的WebRoles时,您的应用程序有两个副本 - 一个存在于AppRoot中,另一个存在于SitesRoot中。)

希望这有帮助!

答案 1 :(得分:0)

WebRole的OnStart可能不会使用您的web.config,您可能已经为AppFabric DataCache提供程序指定了服务器名称和访问密钥。

我会尝试手动检测服务器连接配置。