我想从我的Role Entry StartUp例程访问我的Windows Azure数据缓存。但是我一直收到这个错误:
{“ErrorCode:SubStatus:服务器集合不能为空。”}
然而,当我在Controller类中执行相同操作时,它会加载数据缓存,我可以继续使用它。
在我的应用程序启动之前,我必须做什么才能访问Data Entry类?
或者我无法在角色启动中访问缓存?
干杯
答案 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提供程序指定了服务器名称和访问密钥。
我会尝试手动检测服务器连接配置。