C# 启动时从角色入口点加载数据缓存

C# 启动时从角色入口点加载数据缓存,c#,caching,azure,C#,Caching,Azure,我想从我的角色输入启动例程访问我的windows Azure数据缓存。然而,我不断地得到这个错误: {“错误代码:子状态:服务器集合不能为空。” 但是,当我在我的控制器类中执行相同的操作时,它会很好地加载数据缓存,我可以继续使用它做事情 在应用程序启动之前,要访问数据缓存,我必须对角色条目类执行任何特殊操作吗 或者我不能访问角色启动中的缓存 干杯WebRole的启动可能没有使用web.config,因为您可能已经为AppFabric数据缓存提供程序指定了服务器名称和访问密钥 我将尝试手动检测服务

我想从我的角色输入启动例程访问我的windows Azure数据缓存。然而,我不断地得到这个错误:

{“错误代码:子状态:服务器集合不能为空。”

但是,当我在我的控制器类中执行相同的操作时,它会很好地加载数据缓存,我可以继续使用它做事情

在应用程序启动之前,要访问数据缓存,我必须对角色条目类执行任何特殊操作吗

或者我不能访问角色启动中的缓存


干杯

WebRole的启动可能没有使用web.config,因为您可能已经为AppFabric数据缓存提供程序指定了服务器名称和访问密钥


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

从Azure SDK 1.3开始,有一个重大更改-完整IIS模式。阅读以全面了解完整的IIS以及它是什么

简言之,您的RoleEntryPoint子代(执行OnStart方法的地方)位于整个另一个AppDomain中(实际上是进程-waiHost.exe),而您的实际web应用程序仅位于IIS(w3wp.exe)中。这就是为什么在OnStart()中无法执行会影响web应用程序或直接读取web.config的操作的原因

如果您确实在OnStart中读取Azure数据缓存来为web应用程序预加载数据,只需在Global.asax的应用程序_Start()事件处理程序中执行即可

如果由于特定于RoleEntryPoint的原因需要在OnStart中读取Azure数据缓存,则必须从web.config加载配置。Web.config位于相对于Approt文件夹的“/bin/Web.config”中。(当您将WebRoles与完整IIS一起使用时,有两个应用程序副本—一个位于Approt,另一个位于SitesRoot)

希望这有帮助