c# - 启动时从角色入口点加载 DataCache

标签 c# caching azure

我想从我的角色输入启动例程访问我的 Windows Azure 数据缓存。但是我不断收到此错误:

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

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

在应用程序启动之前,我必须对 Role Entry 类执行哪些特殊操作才能访问数据缓存?

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

干杯

最佳答案

从 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() 事件处理程序中执行即可。

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

希望这有帮助!

关于c# - 启动时从角色入口点加载 DataCache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9322322/

相关文章:

javascript - 为了让浏览器知道始终使用缓存,我应该设置什么响应 header ?

caching - 当 L1 未命中与 L2 访问有很大不同时……与 TLB 相关?

.net - Azure 上的 ASP.NET Core : Can not find assembly file dotnet-razor-tooling. exe

javascript - BreezeJs - 带参数的 Ajax 调用,无缓存

c# - 从路径 Win8.1 创建一个 StorageFile

c# - 如何基于 DropDownList 选择验证具有 RegularExpression 的 TextBox?

c# - 一次对多个整数应用按位运算符

c# - 在本地访问 Azure Key Vault 'secrets' 以获取环境变量 - C#

java - 如何使用 MSI 从 Java 向 Azure 存储进行身份验证?

c# - 替换 C# 中的字符“