无法读取配置。由于其保护级别,RoleEnvironment可能无法访问

时间:2012-03-19 17:18:48

标签: azure azure-role-environment

这是我的第一个天蓝色项目,我不确定我是否做错了什么。 我正在尝试在MVC 3 webrole中进行一些配置,为此我正在使用:

RoleEnvironment.GetConfigurationSettingValue(KeyName)

当我在模拟器上运行应用程序时,我得到了他的错误:

BC30451: 'RoleEnvironment' is not declared. It may be inaccessible due to its protection level.

我尝试添加完整的命名空间,如下所示:

Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.GetConfigurationSettingValue(KeyName)

我收到了这个错误:

BC30456: 'ServiceRuntime' is not a member of 'WindowsAzure'.

但是,我可以访问WebRole类的“OnStart”事件中的RoleEnvironment。 那么,这是预期的行为吗?如果是的话,我应该如何阅读整个项目的配置?

提前致谢;

3 个答案:

答案 0 :(得分:1)

您是否在MVC项目中添加了对Microsoft.WindowsAzure.ServiceRuntime程序集的引用?

http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.serviceruntime.roleenvironment.aspx

答案 1 :(得分:1)

我根据seanost建议开始了一个新的解决方案并且运行良好,所以我认为问题不是VS.经过一些尝试和错误后,我终于找到了解决方案,我只是没有解释它: - )

在我的MVC项目中,我有一个名为“App_Code”的文件夹。 由于我来自Web表单开发,我使用的是名称所以我创建了这个文件夹以保留一些类。如果我尝试从该文件夹中的类访问“RoleEnviroment”,项目将编译但不会打开,无论我尝试访问它都会引发相同的错误。

如果我重命名文件夹或将文件移动到另一个文件夹(让我们说“代码”),它就可以了。 正如我之前所说,我只是不知道它为什么会发生(现在它并不重要: - )

答案 2 :(得分:0)

仅供参考,如果您使用的是Visual Studio的Azure模板,默认情况下会包含对以下命名空间的引用,因此无需将“本地复制”设置为true

  • Microsoft.WindowsAzure.Diagnostics
  • Microsoft.WindowsAzure.ServiceRuntime
  • Microsoft.WindowsAzure.StorageClient

要确保正确安装Visual Studio和SDK,您应该能够执行以下操作:创建新的MVC3 Azure项目,在Home控制器中为ServiceRuntime库添加using指令,然后添加索引操作中的以下代码:

ViewBag.configValue = RoleEnvironment.GetConfigurationSettingValue("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString");
return View();

然后,在视图中添加以下Razor语法:

<p>@ViewBag.configValue;</p>

您应该在浏览器中获得以下结果:

UseDevelopmentStorage=true