2013-03-13 5 views
1

Windows Azure 작업자 역할과 동일한 코드 기반을 실행하는 여러 서비스가 있습니다. 현재 실행중인 코드가 특정 인스턴스에서 실행 중인지 테스트하고 확인하려고합니다. 내가 관리 API이로 호출하는 경우 :Windows Azure에서 배포 ID 일치

<Deployment xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
    <Name>c8bd3b12f1bc4e0db9d8c1d59e97e48b</Name> 
    <DeploymentSlot>Production</DeploymentSlot> 
    <PrivateID>d1ea61e367e84aedb68de97eded3e896</PrivateID> 
    <Status>Running</Status> 
    <Label>SXRlbVVwZGF0ZXIgLSAzLzEzLzIwMTMgMTA6NDQ6MTUgQU0=</Label> 
    <Url>http://itemupdater3.cloudapp.net/</Url> 
    <RoleInstanceList> 
    <RoleInstance> 
     <RoleName>UpdateItems</RoleName> 
     <InstanceName>UpdateItems_IN_0</InstanceName> 
     <InstanceStatus>Ready</InstanceStatus> 
    </RoleInstance> 
    </RoleInstanceList> 
    <UpgradeDomainCount>1</UpgradeDomainCount> 
    <RoleList> 
    <Role> 
     <RoleName>UpdateItems</RoleName> 
     <OsVersion>WA-GUEST-OS-1.22_201302-02</OsVersion> 
    </Role> 
    </RoleList> 
</Deployment> 

내가 테스트하고 현재 실행중인 코드는 다음과 같은 ID가 있는지 확인하기 위해 노력하고있어 :

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(
     new Uri("https://management.core.windows.net/" + subscriptionId + "/services/hostedservices/<<servicename>>/deploymentslots/production?embed-detail=true")); 

이 같은 응답을 얻을 응답. 나는 비교하면 :

xml["Deployment"]["Name"].InnerText; 

이 일치하지

RoleEnvironment.CurrentRoleInstance.Role.Instances[0].Id; 

합니다. C#의 항목과 API에서 반환 된 ID를 어떻게 일치시킬 수 있습니까? 감사합니다.

답변

2

배포 이름 (일반적으로 재배포 할 때마다 고유 한 단일 guid 류 문자열)을 인스턴스 이름 (RoleName_IN_xxx 패턴을 따름)과 비교하려고합니다. 그들은 결코 일치하지 않을 것이다.

100 % 확신 할 수는 없지만 Service Management API를 호출하면 현재 인스턴스에 대한 정보가 제공되지 않습니다. 실행 위치를 알 수 없으므로 현재 인스턴스에 대한 정보를 제공하지 않습니다. Azure 이외의 리소스에서 API를 호출 할 수도 있습니다. 전체 구독에 대한 데이터 만 제공합니다.

RoleEnvironment.CurrentRoleInstance.Id는 현재 인스턴스의 ID를 제공합니다.

+0

고맙습니다. 이고르. 서비스 API를 통해 인스턴스의 ID를 얻을 수 있습니까? XML 위의 "PrivateID"또는 "Name"또는 "Label"입니까? – kevin

+0

RoleInstanceList 요소의 RoleInstance 요소 아래에있는 InstanceName 속성입니다. – Igorek

2

kevin 인 경우 RoleEnvironment.CurrentRoleInstance 대신 RoleEnvironment.DeploymentId를 사용하십시오. 이렇게하면 현재 실행중인 내용과 서비스 관리 API에서 얻은 내용을 비교할 수 있습니다.