セールス: 1-800-867-1380

RoleEnvironment クラス

更新日: 2013年12月

実行中のロール インスタンスの構成、エンドポイント、およびステータスに関する情報を提供します。

名前空間: Microsoft.WindowsAzure.ServiceRuntime
アセンブリ: Microsoft.WindowsAzure.ServiceRuntime (Microsoft.WindowsAzure.ServiceRuntime.dll)

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

RoleEnvironment クラスを使用して、指定したロール インスタンスの構成設定、ローカル ストレージ リソース、およびエンドポイントの情報を取得します。このクラスはまた、構成の変更に対応すること、およびロール インスタンスが停止されようとしているときに通知を受信することをロール インスタンスに許可するイベントを提供します。

noteメモ
Microsoft Azure 1.3 以降では、文字 "RD" で始まる環境変数 ("RdRoleID" など) を独自に使用するために確保しています。特定の状況でアプリケーションが "RD" で始まる環境変数を作成した場合、IsAvailable プロパティは false を返し、RoleEnvironment クラスのその他のメソッドとプロパティは「ロールの検出データは使用できません」というエラー メッセージを生成します。これを修正するには、文字 "RD" で始まらない環境変数を使用します。

noteメモ
RoleEnvironment クラスは、Azure ロールの外で Azure VM のスタンドアロン コンポーネントに対して使用できます。これらのコンポーネントは、実行可能なプログラムとすることができます (たとえば、ロール インスタンスにリモート アクセスし、コマンドラインからコンポーネントを起動する)。RoleEnvironment クラスにアクセスするには、これらのプロセスを高度な特権で実行する必要があります。

次のコード例は、GetConfigurationSettingValue メソッドを使用して MySetting という構成設定の値を取得および書き出す方法を示しています。


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

設定の定義と構成の詳細については、「Windows Azure Service Configuration Schema および Windows 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

この型の public static (Visual Basic では Shared) メンバーはすべてスレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

開発プラットフォーム

Windows Vista、Windows 7 および Windows Server 2008

ターゲット プラットフォーム

この情報は役に立ちましたか。
(残り 1500 文字)
フィードバックをいただき、ありがとうございました

コミュニティの追加

追加
表示:
© 2015 Microsoft