1

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

提前致谢;

4

3 回答 3

1

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

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

于 2012-03-19T20:13:37.283 回答
1

我根据 seanost 的建议开始了一个新的解决方案,并且效果很好,所以我认为问题不在于 VS。经过几次尝试和错误,我终于找到了解决方案,我只是没有解释:-)

在我的 MVC 项目下,我有一个名为“App_Code”的文件夹。因为我来自网络表单开发,所以我习惯了这个名字,所以我创建了这个文件夹来保存一些类。如果我尝试从该文件夹中的类访问“RoleEnviroment”,则项目编译但甚至不会打开,无论我尝试访问什么,它都会引发相同的错误。

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

于 2012-03-20T17:39:29.300 回答
0

仅供参考,如果您使用 Visual Studio 的 Azure 模板,则默认包含对以下命名空间的引用,因此无需将 Copy Local 设置为true

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

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

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

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

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

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

UseDevelopmentStorage=true
于 2012-03-19T21:47:40.440 回答