此页面有用吗?
您对此内容的反馈非常重要。 请告诉我们您的想法。
更多反馈?
1500 个剩余字符
RoleEnvironment 类

RoleEnvironment 类

更新时间: 2013年12月

提供与运行角色实例相关的配置、终结点和状态信息。

命名空间: Microsoft.WindowsAzure.ServiceRuntime
程序集: Microsoft.WindowsAzure.ServiceRuntime(在 Microsoft.WindowsAzure.ServiceRuntime.dll 中)

[WindowsAzureHostingPermissionAttribute(SecurityAction::LinkDemand, Unrestricted=true)] 
public ref class RoleEnvironment sealed

可以使用 RoleEnvironment 类来获取指定角色实例的配置设置、本地存储资源和终结点信息。该类还提供相应的事件,让角色实例对配置更改做出反应,并在角色实例即将停止时接收通知。

note备注
Microsoft Azure 1.3 和更高版本保留了以字母“RD”开头的所有环境变量(如“RdRoleID”)供自身使用。如果你的应用程序创建了以“RD”开头的环境变量,则在某些情况下,IsAvailable 属性将返回 false,并且 RoleEnvironment 类的其他方法和属性会导致出现错误消息“角色发现数据不可用”。若要纠正此问题,请使用不是以字母“RD”开头的环境变量。

note备注
可以在 Azure 角色外部的 Azure VM 中的独立组件上使用 RoleEnvironment 类。这些组件可以是一些支持远程运行的程序,举例来说,你可以通过远程接入角色实例,然后从命令行启动相应的组件。若要访问 RoleEnvironment 类,必须以提升的特权运行这些进程。

以下代码示例演示如何通过使用 GetConfigurationSettingValue 方法,获取并写出名为 MySetting 的配置设置的值:


var settingValue = RoleEnvironment.GetConfigurationSettingValue("MySetting"); 
Trace.WriteLine("The setting value is: " + settingValue, "Information");

有关如何定义和配置设置的详细信息,请参阅 Windows Azure Service Configuration SchemaWindows Azure Service Definition Schema

以下代码示例演示如何检索某个本地存储资源并向其写入一个文本文件:


// Retrieve an object that points to the local storage resource
LocalResource localResource = RoleEnvironment.GetLocalResource("localStoreTwo");

//Define the file name and path
string[] paths = { localResource.RootPath, "MyStorageTest.txt"};
String filePath = Path.Combine(paths);

using (FileStream writeStream = File.Create(filePath))
{
   Byte[] textToWrite = new UTF8Encoding(true).GetBytes("Testing Web role storage");
   writeStream.Write(textToWrite, 0, textToWrite.Length);
}

以下代码示例演示如何检索当前角色实例的终结点信息:


var roleInstance = RoleEnvironment.CurrentRoleInstance; 
foreach (RoleInstanceEndpoint instanceEndpoint in roleInstance.InstanceEndpoints.Values) 
{  
   Trace.WriteLine("Instance endpoint address and port: " + instanceEndpoint.IPEndpoint, "Information");
   Trace.WriteLine("Protocol for the endpoint: " + , instanceEndpoint.Protocol, "Information");
}

以下代码示例演示如何检索对角色实例所做的配置更改:


public override bool OnStart()
{
   RoleEnvironment.Changed += RoleEnvironmentChanged;
  
   return base.OnStart();
}
   
private void RoleEnvironmentChanged(object sender, RoleEnvironmentChangedEventArgs e)
{
   // Get the list of configuration changes
   var settingChanges = e.Changes.OfType<RoleEnvironmentConfigurationSettingChange>();
      
   foreach (var settingChange in settingChanges) 
   {
      var message = "Setting: " + settingChange.ConfigurationSettingName;
      Trace.WriteLine(message, "Information");
   }
}

仅当为 ServiceDefinition.csdef 文件中的角色定义了内部终结点时,才引发事件。有关定义终结点的详细信息,请参阅How to Define Internal Endpoints for a Role


System.Object
  Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment

此类型的所有公开静态(在 Visual Basic 中为共享)成员均为线程安全型成员。但不保证所有实例成员都是线程安全的。

开发平台

Windows Vista、Windows 7 和 Windows Server 2008

目标平台

社区附加资源

添加
显示:
© 2015 Microsoft