这是我的第一个天蓝色项目,我不确定我是否做错了什么。 我正在尝试在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。 那么,这是预期的行为吗?如果是的话,我应该如何阅读整个项目的配置?
提前致谢;
答案 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
:
要确保正确安装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