VENDITE: 1-800-867-1389

Creare la distribuzione di una macchina virtuale

Aggiornamento: maggio 2014

Tramite l'operazione Create Virtual Machine Deployment viene creata una distribuzione e, successivamente, una macchina virtuale nella distribuzione in base alla configurazione specificata.

La richiesta di Create Virtual Machine Deployment può essere specificata come indicato di seguito. Sostituire <subscription-id> con l'ID sottoscrizione e <cloudservice-name> con il nome del servizio cloud.

 

Metodo URI della richiesta

POST

https://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>/deployments

È necessario verificare che la richiesta effettuata al servizio di gestione sia sicura. Per altri dettagli, vedere Autenticazione di richieste di gestione dei servizi.

Nessuno.

Nella tabella seguente vengono descritte le intestazioni delle richieste.

 

Intestazione della richiesta Descrizione

x-ms-version

Obbligatorio. Specifica la versione dell'operazione da utilizzare per questa richiesta. Questa intestazione deve essere impostata su 01.03.12 o una versione successiva. Per altre informazioni sulle intestazioni di controllo delle versioni, vedere Controllo delle versioni relativo alla gestione dei servizi.

Il formato del corpo della richiesta è il seguente:


<Deployment xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <Name>name-of-deployment</Name>
  <DeploymentSlot>deployment-environment</DeploymentSlot>
  <Label>identifier-of-deployment</Label>      
  <RoleList>
    <Role>
      <RoleName>name-of-the-virtual-machine</RoleName>
      <RoleType>PersistentVMRole</RoleType>
      <ConfigurationSets>
        <ConfigurationSet i:type="WindowsProvisioningConfigurationSet">
          <ConfigurationSetType>WindowsProvisioningConfiguration</ConfigurationSetType>
          <ComputerName>name-of-computer</ComputerName>
          <AdminPassword>administrator-password</AdminPassword>
          <EnableAutomaticUpdates>enable-updates</EnableAutomaticUpdates>  
          <TimeZone>time-zone</TimeZone>
          <DomainJoin>
            <Credentials>
              <Domain>domain-to-join</Domain>
              <Username>user-name-in-the-domain</Username>
              <Password>password-for-the-user-name</Password>
            </Credentials>
            <JoinDomain>domain-to-join</JoinDomain>
            <MachineObjectOU>distinguished-name-of-the-ou</MachineObjectOU>
          </DomainJoin>
          <StoredCertificateSettings>
            <CertificateSetting>
              <StoreLocation>LocalMachine</StoreLocation>
              <StoreName>name-of-store-on-the-machine</StoreName>
              <Thumbprint>certificate-thumbprint</Thumbprint>
            </CertificateSetting>
          </StoredCertificateSettings>
          <WinRM>
            <Listeners>
              <Listener>
                <Protocol>listener-protocol</Protocol>
              </Listener>
              <Listener>
                <CertificateThumbprint>certificate-thumbprint</CertificateThumbprint>
                <Protocol>listener-protocol</Protocol>
              </Listener>
            </Listeners>
          </WinRM>
          <AdminUsername>name-of-administrator-account</AdminUsername>
          <CustomData>base-64-encoded-data</CustomData>
          <AdditionalUnattendContent>
            <Passes>
              <UnattendPass>
                <PassName>name-of-pass</PassName>
                <Components>
                  <ComponentName>name-of-component</ComponentName>
                  <ComponentSettings>
                    <ComponentSetting>
                      <SettingName>name-of-setting</SettingName>
                      <Content>base-64-encoded-XML-content</Content>
                    </ComponentSetting>
                  </ComponentSettings>
                </Components>
              </UnattendedPass>
            </Passes>
          </AdditionalUnattendedContent>
        </ConfigurationSet>
        <ConfigurationSet i:type="LinuxProvisioningConfigurationSet">
          <ConfigurationSetType>LinuxProvisioningConfiguration</ConfigurationSetType>
          <HostName>host-name-for-the-virtual-machine</HostName>
          <UserName>new-user-name</UserName> 
          <UserPassword>password-for-the-new-user</UserPassword> 
          <DisableSshPasswordAuthentication>password-authentication</DisableSshPasswordAuthentication>           
          <SSH>
            <PublicKeys>
              <PublicKey>
                <FingerPrint>certificate-fingerprint</FingerPrint>
                <Path>SSH-public-key-storage-location</Path>     
              </PublicKey>
            </PublicKeys>
            <KeyPairs>
              <KeyPair>
                <FingerPrint>certificate-fingerprint</FinguerPrint>
                <Path>SSH-public-key-storage-location</Path>
              </KeyPair>
            </KeyPairs>
          </SSH>
          <CustomData>base-64-encoded-data</CustomData>
        </ConfigurationSet>        
        <ConfigurationSet> 
          <ConfigurationSetType>NetworkConfiguration</ConfigurationSetType>
          <InputEndpoints>
            <InputEndpoint>
              <LoadBalancedEndpointSetName>name-of-load-balanced-set</LoadBalancedEndpointSetName>
              <LocalPort>local-port-number</LocalPort>
              <Name>name-of-endpoint</Name>
              <Port>external-port-number</Port>
              <LoadBalancerProbe>
                <Path>path-of-probe</Path>
                <Port>port-assigned-to-probe</Port>
                <Protocol>probe-protocol</Protocol>
                <IntervalInSeconds>interval-of-probe</IntervalInSeconds>
                <TimeoutInSeconds>timeout-for-probe</TimeoutInSeconds>
              </LoadBalancerProbe>
              <LoadBalancerName>name-of-internal-loadbalancer</LoadBalancerName>
              <Protocol>endpoint-protocol</Protocol>        
              <EnableDirectServerReturn>enable-direct-server-return</EnableDirectServerReturn>       
              <EndpointACL>
                <Rules>
                  <Rule>
                    <Order>priority-of-the-rule</Order>
                    <Action>permit-rule</Action>
                    <RemoteSubnet>subnet-of-the-rule</RemoteSubnet>
                    <Description>description-of-the-rule</Description>
                  </Rule>
                </Rules>
              </EndpointACL>
            </InputEndpoint>
          </InputEndpoints>
          <SubnetNames>
            <SubnetName>name-of-subnet</SubnetName>
          </SubnetNames> 
          <StaticVirtualNetworkIPAddress>ip-address</StaticVirtualNetworkIPAddress>
          <PublicIPs>
            <PublicIP>
              <Name>name-of-public-ip</Name>
            <PublicIP>
          <PublicIPs>        
        </ConfigurationSet>
      </ConfigurationSets>
      <ResourceExtensionReferences>
        <ResourceExtensionReference>
          <ReferenceName>name-of-reference</ReferenceName>
          <Publisher>name-of-publisher</Publisher>
          <Name>name-of-extension</Name>
          <Version>version-of-extension</Version>
          <ResourceExtensionParameterValues>
            <ResourceExtensionParameterValue>
              <Key>name-of-parameter-key</Key>
              <Value>parameter-value</Value>
              <Type>type-of-parameter</Type>
            </ResourceExtensionParameterValue>
          </ResourceExtensionParameterValues>
          <State>state-of-resource</State>
        </ResourceExtensionReference>
      </ResourceExtensionReferences>
      <VMImageName>name-of-vm-image</VMImageName>
      <MediaLocation>path-to-vhd</MediaLocation>
      <AvailabilitySetName>name-of-availability-set</AvailabilitySetName>
      <DataVirtualHardDisks>
        <DataVirtualHardDisk>
          <HostCaching>caching-mode</HostCaching> 
          <DiskLabel>label-of-data-disk</DiskLabel>            
          <DiskName>name-of-disk</DiskName>
          <Lun>logical-unit-number</Lun>
          <LogicalDiskSizeInGB>size-in-gb-of-data-disk</LogicalDiskSizeInGB>            
          <MediaLink>path-to-vhd</MediaLink>
        </DataVirtualHardDisk>
      </DataVirtualHardDisks>
      <OSVirtualHardDisk>
        <HostCaching>caching-mode</HostCaching>    
        <DiskLabel>label-of-operating-system-disk</DiskLabel>
        <DiskName>name-of-disk</DiskName>                    
        <MediaLink>path-to-vhd</MediaLink>
        <SourceImageName>name-of-source-image</SourceImageName>
        <RemoteSourceImageLink>path-to-source-image</RemoteSourceImageLink>
        <OS>operating-system-of-image</OS>
      </OSVirtualHardDisk>      
      <RoleSize>size-of-virtual-machine</RoleSize>
      <ProvisionGuestAgent>install-an-agent</ProvisionGuestAgent>
    </Role>
  </RoleList>
  <VirtualNetworkName>name-of-virtual-network</VirtualNetworkName>
  <Dns>
    <DnsServers>
      <DnsServer>
        <Name>dns-name</Name>
        <Address>dns-ip-address</Address>
      </DnsServer>
    </DnsServers>
  </Dns>
  <ReservedIPName>name-of-reserved-ip</ReservedIPName>
  <LoadBalancers>
    <LoadBalancer>
      <Name>name-of-internal-load-balancer</Name>
      <FrontendIpConfiguration>
        <Type>type-of-ip-address</Type>
        <SubnetName>name-of-subnet</SubnetName>
        <StaticVirtualNetworkIPAddress>static-ip-address</StaticVirtualNetworkIPAddress>
      </FrontendIpConfiguration>
    </LoadBalancer>
  </LoadBalancers>
</Deployment>

Nella tabella indicata di seguito vengono descritti gli elementi del corpo della richiesta.

 

Nome elemento Descrizione

Nome

Obbligatorio. Specifica un nome per la distribuzione. Il nome della distribuzione deve essere univoco tra le distribuzioni del servizio cloud.

DeploymentSlot

Obbligatorio. Specifica l'ambiente in cui deve essere distribuita la macchina virtuale. L'unico valore consentito è Production.

Label

Obbligatorio. Specifica un identificatore della distribuzione. L'etichetta può essere costituita da un massimo di 100 caratteri. Può essere utilizzata per motivi di rilevamento.

RoleList

Obbligatorio. Contiene le informazioni sulle macchine virtuali da distribuire.

VirtualNetworkName

Facoltativo. Specifica il nome della rete virtuale esistente a cui apparterrà la distribuzione.

Le reti virtuali vengono create chiamando l'operazione Impostare la configurazione di rete.

Dns

Facoltativo. Contiene un elenco di server DNS da associare alla macchina virtuale.

ReservedIPName

Facoltativo. Specifica il nome dell'indirizzo IP riservato da assegnare alla distribuzione. Per assegnare l'indirizzo alla distribuzione utilizzando questo elemento, è prima necessario eseguire Create Reserved IP Address.

L'elemento ReservedIPName è disponibile solo se si utilizza la versione 01.05.14 o una versione successiva.

LoadBalancers

Facoltativo. Contiene un elenco dei dispositivi di bilanciamento del carico interni che possono essere assegnati a endpoint di input.

L'elemento LoadBalancers è disponibile solo se si utilizza la versione 01.05.14 o una versione successiva.

Contiene le informazioni sulle macchine virtuali da distribuire.

 

Nome elemento Descrizione

Ruolo

Obbligatorio. Contiene i set di configurazione utilizzati per creare macchine virtuali.

Contiene i set di configurazione utilizzati per creare macchine virtuali.

 

Nome elemento Descrizione

RoleName

Obbligatorio. Specifica il nome della macchina virtuale.

RoleType

Obbligatorio. Specifica il tipo di ruolo da utilizzare. Per le macchine virtuali, deve essere PersistentVMRole.

ConfigurationSets

Facoltativo. Contiene una raccolta di set di configurazione tramite cui vengono definite le impostazioni di configurazione dell'applicazione e di sistema.

ResourceExtensionReferences

Facoltativo. Contiene una raccolta di estensioni di risorsa da installare nella macchina virtuale. Questo elemento viene utilizzato se ProvisionGuestAgent è impostato su true.

L'elemento ResourceExtensionReferences è disponibile solo se si utilizza la versione 01.11.13 o una versione successiva.

VMImageName

Facoltativo. Specifica il nome dell'immagine di macchina virtuale da utilizzare per creare la macchina virtuale. Se si utilizza questo elemento, non viene utilizzato l'elemento ConfigurationSets. Per altre informazioni, vedere Acquisire l'immagine di macchina virtuale.

L'elemento VMImageName è disponibile solo se si utilizza la versione 01.02.14 o una versione successiva.

MediaLocation

Obbligatorio se la macchina virtuale viene creata a partire da un'immagine di macchina virtuale pubblicata. Indica il percorso del file VHD creato quando VMImageName specifica un'immagine di macchina virtuale pubblicata.

L'elemento MediaLocation è disponibile solo se si utilizza la versione 01.05.14 o una versione successiva.

AvailabilitySetName

Facoltativo. Specifica il nome di una raccolta di macchine virtuali. Le macchine virtuali specificate nello stesso set di disponibilità vengono allocate a nodi diversi per ottimizzare la disponibilità. Per altre informazioni sui set di disponibilità, vedere la pagina relativa alla gestione della disponibilità di macchine virtuali.

DataVirtualHardDisks

Facoltativo. Contiene i parametri utilizzati per aggiungere un disco dati a una macchina virtuale. Se si crea una macchina virtuale utilizzando un'immagine di macchina virtuale, questo elemento non viene utilizzato. Per altre informazioni sui dischi dati, vedere Gestisci dischi e immagini.

OSVirtualHardDisk

Facoltativo. Contiene i parametri utilizzati per creare il disco del sistema operativo per una macchina virtuale. Se si crea una macchina virtuale utilizzando un'immagine di macchina virtuale, questo elemento non viene utilizzato.

RoleSize

Facoltativo. Specifica la dimensione della macchina virtuale. La dimensione predefinita è Piccola. Per altre informazioni sulle dimensioni delle macchine virtuali, vedere la pagina relativa alle dimensioni delle macchine virtuali e dei servizi cloud per Azure.

ProvisionGuestAgent

Facoltativo. Indica se nella macchina virtuale è installato l'agente VM. Per eseguire un'estensione di risorsa in una macchina virtuale, questo servizio deve essere installato.

I valori possibili sono:

  • true

  • false

Contiene una raccolta di set di configurazione che specificano le impostazioni di configurazione dell'applicazione e di sistema.

 

Nome elemento Descrizione

ConfigurationSet

Obbligatorio. Specifica gli elementi di configurazione della macchina virtuale. L'attributo type è necessario per evitare che la password dell'amministratore venga scritta nel file di cronologia dell'operazione.

ConfigurationSetType

Obbligatorio. Per creare una macchina virtuale, è necessario specificare uno dei set di configurazione seguenti:

  • WindowsProvisioningConfiguration

  • LinuxProvisioningConfiguration

Facoltativo. È possibile specificare facoltativamente un set di NetworkConfiguration contenente i metadati obbligatori per creare la configurazione della rete virtuale per una macchina virtuale.

NomeComputer

Facoltativo in WindowsProvisioningConfiguration. Specifica il nome computer della macchina virtuale. Se non si specifica un nome computer, ne viene assegnato uno che è una combinazione del nome della distribuzione, del nome del ruolo e del numero di identificazione. I nomi computer devono essere costituiti da un numero di caratteri compreso tra 1 e 15.

AdminPassword

Facoltativo in WindowsProvisioningConfiguration. Specifica la password da utilizzare per un account amministratore nella macchina virtuale che deve essere creata. Se viene utilizzata un'immagine per creare una macchina virtuale, sarà necessario specificare un nome di account amministratore da creare nella macchina utilizzando l'elemento AdminUsername. Utilizzare l'elemento AdminPassword per specificare la password dell'account amministratore che deve essere creato. Se invece viene utilizzato un disco specializzato esistente per creare una macchina virtuale, questo elemento non viene utilizzato poiché l'account dovrebbe essere già presente nel disco.

EnableAutomaticUpdates

Facoltativo in WindowsProvisioningConfiguration. Specifica se gli aggiornamenti automatici sono abilitati per la macchina virtuale.

I valori possibili sono:

  • true

  • false

Il valore predefinito è true.

TimeZone

Facoltativo in WindowsProvisioningConfiguration. Specifica il fuso orario della macchina virtuale.

Per un elenco completo delle voci di fuso orario supportate, è possibile:

  • Fare riferimento ai valori elencati nella voce del Registro di sistema HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones.

  • È possibile utilizzare lo strumento da riga di comando tzutil per visualizzare l'orario valido.

DomainJoin

Facoltativo in WindowsProvisioningConfiguration. Contiene le proprietà mediante le quali viene definito un dominio a cui verrà aggiunta la macchina virtuale.

StoredCertificateSettings

Facoltativo in WindowsProvisioningConfiguration. Contiene un elenco dei certificati di servizio con cui effettuare il provisioning della nuova macchina virtuale.

WinRM

Facoltativo in WindowsProvisioningConfiguration. Contiene le impostazioni di configurazione per il servizio Gestione remota Windows nella macchina virtuale. In questo modo viene abilitato Windows PowerShell.

L'elemento WinRM è disponibile solo se si utilizza la versione 01.03.13 o una versione successiva.

AdminUsername

Facoltativo in WindowsProvisioningConfiguration. Specifica il nome dell'account amministratore che viene creato per accedere alla macchina virtuale. Se viene utilizzata un'immagine per creare una macchina virtuale, sarà necessario specificare un nome di account amministratore da creare utilizzando questo elemento. Utilizzare l'elemento AdminPassword per specificare la password dell'account amministratore che deve essere creato. Se invece viene utilizzato un disco specializzato esistente per creare una macchina virtuale, questo elemento non viene utilizzato poiché l'account dovrebbe essere già presente nel disco.

CustomData

Facoltativo in WindowsProvisioningConfiguration. Specifica una stringa con codifica in Base 64 di dati personalizzati. La stringa con codifica in Base 64 viene decodificata in una matrice binaria salvata come file nella macchina virtuale. La lunghezza massima della matrice binaria è 65535 byte. Il file viene salvato in %SYSTEMDRIVE%\AzureData\CustomData.bin. Se esiste già, il file verrà sovrascritto. La sicurezza nella directory è impostata su System:Full Control e Administrators:Full Control.

L'elemento CustomData è disponibile solo se si utilizza la versione 01.10.13 o una versione successiva.

AdditionalUnattendContent

Facoltativo. Specifica informazioni aggiuntive in formato XML con codifica Base 64 che possono essere incluse nel file Unattend.xml utilizzato da Installazione di Windows. Per altre informazioni, vedere Panoramica dei file di risposte.

L'elemento AdditionalUnattendContent è disponibile solo se si utilizza la versione 01.04.14 o una versione successiva.

HostName

Obbligatorio in LinuxProvisioningConfiguration. Specifica il nome host della macchina virtuale. I nomi host devono essere costituiti da un numero di caratteri compreso tra 1 e 64.

UserName

Obbligatorio in LinuxProvisioningConfiguration. Specifica il nome di un account utente da creare nel gruppo sudoer della macchina virtuale. I nomi degli account utente devono avere una lunghezza compresa tra 1 e 32 caratteri.

UserPassword

Obbligatorio in LinuxProvisioningConfiguration. Specifica la password per l'account utente. Le password devono avere una lunghezza compresa tra 6 e 72 caratteri.

DisableSshPasswordAuthentication

Facoltativo in LinuxProvisioningConfiguration. Specifica se l'autenticazione con password SSH è disabilitata. Per impostazione predefinita, questo valore è impostato su true.

I valori possibili sono:

  • true

  • false

Il valore predefinito è true.

SSH

Facoltativo in LinuxProvisioningConfiguration. Specifica le coppie di chiavi e le chiavi pubbliche SSH da utilizzare con la macchina virtuale.

CustomData

Facoltativo in LinuxProvisioningConfiguration. Specifica una stringa con codifica in Base 64 di dati personalizzati. La stringa codificata in base 16 si trova nel file ovf-env.xml nell'immagine ISO della macchina virtuale. Il file viene copiato in /var/lib/waagent/ovf-env.xml dall'agente Linux di Azure. L'agente Linux di Azure posizionerà inoltre i dati codificati in base 64 in /var/lib/waagent/CustomData durante il provisioning. La lunghezza massima della matrice binaria è 65535 byte.

L'elemento CustomData è disponibile solo se si utilizza la versione 01.10.13 o una versione successiva.

InputEndpoints

Facoltativo in NetworkConfiguration. Contiene una raccolta di endpoint esterni per la macchina virtuale.

SubnetNames

Obbligatorio se si specifica StaticVirtualNetworkIPAddress ; in caso contrario, facoltativo in NetworkConfiguration. Contiene un elenco di subnet a cui apparterrà la macchina virtuale.

StaticVirtualNetworkIPAddress

Facoltativo. Specifica l'indirizzo IP interno della macchina virtuale in una rete virtuale. Se si specifica questo elemento, è necessario specificare anche l'elemento SubnetNames con una sola subnet definita. L'indirizzo IP specificato in questo elemento deve appartenere alla subnet definita in SubnetNames e non deve essere uno dei primi quattro indirizzi IP né l'ultimo indirizzo IP nella subnet. La distribuzione di ruoli Web o di lavoro in una subnet con macchine virtuali con StaticVirtualNetworkIPAddress definito non è supportata.

L'elemento StaticVirtualNetworkIPAddress è disponibile solo se si utilizza la versione 01.11.13 o una versione successiva.

PublicIPs

Facoltativo. Contiene un indirizzo IP pubblico da utilizzare in aggiunta all'indirizzo IP virtuale predefinito della macchina virtuale.

L'elemento PublicIPs è disponibile solo se si utilizza la versione 01.05.14 o una versione successiva.

Contiene le proprietà mediante le quali viene definito un dominio a cui verrà aggiunta la macchina virtuale.

 

Nome elemento Descrizione

Credenziali

Facoltativo. Specifica le credenziali da utilizzare per aggiungere la macchina virtuale al dominio.

JoinDomain

Facoltativo. Specifica il dominio a cui aggiungere la macchina virtuale.

MachineObjectOU

Facoltativo. Specifica il nome distinto X 500 LDAP (Lightweight Directory Access Protocol) dell'unità organizzativa in cui viene creato l'account computer. Questo account è incluso in Active Directory in un controller di dominio nel dominio a cui viene aggiunto il computer.

Esempio:

OU=MyOu, OU=MyParentOu, DC=example.com, DC=MyCompany, DC=com

Specifica le credenziali da utilizzare per aggiungere la macchina virtuale al dominio.

 

Nome elemento Descrizione

Domain

Facoltativo. Specifica il nome del dominio utilizzato per autenticare un account Il valore è un dominio DNS completo.

Se il nome di dominio non viene specificato, per Username è necessario specificare il formato del nome dell'entità utente (UPN) (utente@dominio-DNS-completo) o il formato dominio-DNS-completo/nomeutente.

Esempio:

example.com

Nome utente

Obbligatorio. Specifica un nome utente nel dominio che è possibile utilizzare per l'aggiunta al dominio.

Password

Obbligatorio. Specifica la password da utilizzare per l'aggiunta al dominio.

Contiene un elenco dei certificati di servizio con cui effettuare il provisioning della nuova macchina virtuale. Le impostazioni dei certificati archiviati fanno riferimento ai certificati già esistenti nel servizio cloud. Prima di configurare i certificati archiviati per la macchina virtuale, è necessario chiamare l'operazione Aggiungere un certificato di servizio o aggiungere il certificato tramite il portale di gestione.

 

Nome elemento Descrizione

CertificateSetting

Obbligatorio. Specifica i parametri del certificato.

StoreLocation

Obbligatorio. Specifica il percorso dell'archivio certificati nella macchina virtuale.

L'unico valore supportato è LocalMachine.

StoreName

Obbligatorio. Specifica il nome dell'archivio certificati da cui recuperare il certificato.

Ad esempio, "My".

Thumbprint

Obbligatorio. Specifica l'identificazione digitale del certificato. Nell'identificazione digitale deve essere specificato un certificato di servizio esistente.

Contiene le impostazioni di configurazione per il servizio Gestione remota Windows nella macchina virtuale.

 

Nome elemento Descrizione

Listener

Obbligatorio. Contiene una raccolta di informazioni per abilitare Windows PowerShell remoto.

Listener

Obbligatorio. Specifica le informazioni sul certificato e sul protocollo per il listener.

Protocollo

Specifica il protocollo di listener.

I valori possibili sono:

  • Http

  • Https

Per il valore viene fatta distinzione tra maiuscole e minuscole.

CertificateThumbprint

Facoltativo. Specifica l'identificazione digitale del certificato per la connessione sicura. Se questo valore non è specificato, per la macchina virtuale viene generato e utilizzato un certificato autofirmato.

Specifica informazioni aggiuntive in formato XML con codifica Base 64 che possono essere incluse nel file Unattend.xml utilizzato da Installazione di Windows.

 

Nome elemento Descrizione

PassName

Obbligatorio. Specifica il nome del passaggio a cui si applica il contenuto. L'unico valore consentito è oobeSystem.

ComponentName

Obbligatorio. Specifica il nome del componente da configurare con il contenuto aggiunto. L'unico valore consentito è Microsoft-Windows-Shell-Setup.

SettingName

Obbligatorio. Specifica il nome dell'impostazione a cui si applica il contenuto.

I valori possibili sono:

  • FirstLogonCommands

  • AutoLogon

Content

Obbligatorio. Specifica il contenuto in formato XML con codifica Base 64 che viene aggiunto al file Unattend.xml per il percorso e il componente indicati. Il file XML deve avere dimensioni inferiori a 4 KB e deve includere l'elemento radice relativo all'impostazione o alla funzionalità in fase di inserimento.

Specifica le coppie di chiavi e le chiavi pubbliche SSH da utilizzare con la macchina virtuale.

 

Nome elemento Descrizione

PublicKeys

Facoltativo. Specifica la raccolta di chiavi pubbliche SSH.

PublicKey

Obbligatorio. Specifica la chiave pubblica.

FingerPrint

Obbligatorio. Specifica l'impronta digitale SHA1 di un certificato X509 associato al servizio cloud e include la chiave pubblica SSH.

Percorso

Obbligatorio. Specifica il percorso completo di un file, nella macchina virtuale, in cui è archiviata la chiave pubblica SSH. Se il file esiste già, la chiave specificata viene aggiunta al file.

Esempio:

/home/user/.ssh/authorized_keys

KeyPairs

Obbligatorio. Specifica una raccolta di coppie di chiavi SSH.

KeyPair

Obbligatorio. Specifica una coppia di chiavi SSH da installare nella macchina virtuale.

FingerPrint

Obbligatorio. Specifica l'impronta digitale SHA1 di un certificato X509 associato al servizio cloud e include la coppia di chiavi SSH.

Percorso

Obbligatorio. Specifica il percorso completo di un file, nella macchina virtuale, in cui è archiviata la chiave privata SSH. Quando vengono scritte più chiavi, il file viene sovrascritto. La chiave pubblica SSH viene archiviata nella stessa directory e ha lo stesso nome del file della chiave privata con suffisso pub.

Esempio:

/home/user/.ssh/id_rsa

Contiene una raccolta di endpoint esterni per la macchina virtuale.

 

Nome elemento Descrizione

InputEndpoint

Obbligatorio. Specifica le proprietà mediante le quali viene definito un endpoint esterno per la macchina virtuale.

LoadBalancedEndpointSetName

Facoltativo. Specifica il nome di un set di endpoint con carico bilanciato. Se specificato per un endpoint, questo elemento viene aggiunto al set

Non impostare questa proprietà se si aggiunge l'endpoint per la connessione alla macchina virtuale tramite il desktop remoto.

noteNota
Il nome dell'endpoint deve essere univoco nell'ambito della macchina virtuale.

LocalPort

Obbligatorio. Specifica la porta interna su cui la macchina virtuale è in ascolto.

Nome

Obbligatorio. Specifica il nome dell'endpoint esterno.

Porta

Obbligatorio. Specifica la porta esterna da utilizzare per l'endpoint.

LoadBalancerProbe

Facoltativo. Contiene le proprietà mediante le quali vengono definite le impostazioni dell'endpoint utilizzate dal dispositivo di bilanciamento del carico per monitorare la disponibilità della macchina virtuale prima di inoltrarvi il traffico.

LoadBalancerName

Facoltativo. Specifica il nome del dispositivo di bilanciamento del carico interno associato all'endpoint. Il nome del dispositivo di bilanciamento del carico interno è specificato in LoadBalancers.

L'elemento LoadBalancerName è disponibile solo se si utilizza la versione 01.05.14 o una versione successiva.

Protocollo

Obbligatorio. Specifica il protocollo di trasporto per l'endpoint.

I valori possibili sono:

  • TCP

  • UDP

EnableDirectServerReturn

Facoltativo. Specifica se Direct Server Return viene utilizzato dall'endpoint. L'elemento EnableDirectServerReturn non è supportato per gli endpoint RDP, SSH o WinRM né quando la porta pubblica e quella locale di un endpoint sono diverse. È consigliabile utilizzare questo elemento solo quando si installano le macchine virtuali per SQL Server e i gruppi di disponibilità AlwaysOn. Per altre informazioni, vedere Disponibilità elevata e ripristino di emergenza di SQL Server in Macchine virtuali di Azure.

I valori possibili sono:

  • true

  • false

Il valore predefinito è false.

EndpointACL

Facoltativo. Contiene una raccolta di regole mediante le quali viene controllato il traffico di rete a un endpoint.

L'elemento EndpointACL è disponibile solo se utilizza la versione 2013-06-01 o superiore.

Contiene le proprietà mediante le quali vengono definite le impostazioni dell'endpoint utilizzate dal dispositivo di bilanciamento del carico per monitorare la disponibilità della macchina virtuale prima di inoltrarvi il traffico.

 

Nome elemento Descrizione

Percorso

Facoltativo. Specifica il percorso relativo da verificare per determinare lo stato di disponibilità della macchina virtuale. Se il protocollo è impostato su TCP, questo valore deve essere NULL.

Esempio:

path

Per eseguire il probe, verrà utilizzato https://example.com/path.

Porta

Facoltativo. Specifica la porta da utilizzare per verificare lo stato di disponibilità della macchina virtuale.

Protocollo

Facoltativo. Specifica il protocollo da utilizzare per verificare lo stato di disponibilità della macchina virtuale.

I valori possibili sono:

  • HTTP

  • TCP

IntervalInSeconds

Facoltativo. Specifica l'intervallo del probe di bilanciamento del carico in secondi. Il valore minimo è 5 secondi. Il valore predefinito è 15 secondi.

TimeoutInSeconds

Facoltativo. Specifica il timeout del probe di bilanciamento del carico in secondi. Il valore minimo è 11 secondi. Il valore predefinito è 31 secondi.

Contiene una raccolta di regole mediante le quali viene controllato il traffico di rete all'endpoint.

 

Nome elemento Descrizione

Rules

Obbligatorio. Specifica una raccolta di regole di controllo di accesso. Sono consentite fino a 50 regole.

Rule

Obbligatorio. Specifica la definizione di una regola di controllo di accesso.

Order

Obbligatorio. Specifica la priorità della regola. Il valore può essere compreso tra 0 e 65535. Il numero di ordine deve essere univoco per ciascuna regola della raccolta. Più basso è il numero di ordine, più elevata è la priorità della regola.

Action

Obbligatorio. Specifica se il traffico che corrisponde alla regola deve essere consentito o negato.

I valori possibili sono:

  • permit

  • deny

RemoteSubnet

Obbligatorio. Specifica la subnet per la regola. La subnet deve essere nella notazione CIDR (Classless Inter-Domain Routing) IPV4 ed essere valida,

ad esempio, 10.0.0.0/24.

Descrizione

Facoltativo. Specifica una descrizione per la regola. La lunghezza massima della descrizione è pari a 256 caratteri.

Contiene un indirizzo IP pubblico da utilizzare in aggiunta all'indirizzo IP virtuale predefinito della macchina virtuale.

 

Nome elemento Descrizione

PublicIP

Obbligatorio. Specifica un indirizzo IP pubblico aggiuntivo che può essere utilizzato per comunicare con la macchina virtuale.

Nome

Obbligatorio. Specifica il nome dell'indirizzo IP pubblico.

Contiene un elenco di subnet a cui apparterrà la macchina virtuale.

 

Nome elemento Descrizione

SubnetName

Obbligatorio. Specifica il nome di una subnet a cui appartiene la macchina virtuale.

Contiene i parametri utilizzati per aggiungere un disco dati a una macchina virtuale.

 

Nome elemento Descrizione

DataVirtualHardDisk

Obbligatorio. Specifica le proprietà utilizzate per creare un disco dati.

HostCaching

Facoltativo. Specifica la modalità di memorizzazione nella cache del disco dati.

I valori possibili sono:

  • None

  • ReadOnly

  • ReadWrite

Il valore predefinito è None.

DiskLabel

Facoltativo. Se il disco che viene aggiunto è già registrato nella sottoscrizione, questo elemento viene ignorato. Se viene creato un nuovo disco, questo elemento viene utilizzato per fornirne una descrizione. Il valore di questo elemento viene ottenuto solo a livello di codice e non viene visualizzato nel portale di gestione.

DiskName

Facoltativo. Se il disco che viene aggiunto è già registrato nella sottoscrizione, questo elemento viene utilizzato per identificare il disco da aggiungere. Se vengono creati da Azure un nuovo disco e il VHD associato, questo elemento non viene utilizzato e tramite Azure viene assegnato un nome univoco costituito da una combinazione di nome della distribuzione, nome del ruolo e numero di identificazione.

Il nome del disco può contenere unicamente caratteri alfanumerici, caratteri di sottolineatura, punti o trattini. La lunghezza del nome non deve superare i 256 caratteri. Il nome non deve terminare con un punto o un trattino.

È possibile utilizzare l'elenco dei dischi per trovare quelli disponibili.

Lun

Facoltativo. Specifica il numero di unità logica (LUN) per il disco dati. Se quello aggiunto è il primo disco, questo elemento è facoltativo e viene utilizzato il valore predefinito 0. Se vengono aggiunti più dischi, questo elemento è obbligatorio.

È possibile ottenere il ruolo per trovare i numeri LUN già utilizzati.

I valori LUN validi sono compresi tra 0 e 15.

LogicalDiskSizeInGB

Facoltativo. Specifica le dimensioni, in GB, di un disco vuoto da collegare alla macchina virtuale. Se il disco che viene aggiunto è già registrato nella sottoscrizione, questo elemento viene ignorato. Se il disco e il VHD vengono creati da Azure quando vengono aggiunti, tramite questo elemento vengono definite le dimensioni del nuovo disco.

Il numero di dischi che si possono aggiungere a una macchina virtuale viene limitato dalla dimensione della macchina. Per altre informazioni, vedere la pagina relativa alle dimensioni delle macchine virtuali e dei servizi cloud per Azure.

Questo elemento viene utilizzato con l'elemento MediaLink.

MediaLink

Facoltativo. Se il disco che viene aggiunto è già registrato nella sottoscrizione oppure il VHD per il disco già esiste nell'archiviazione Blob, questo elemento viene ignorato. Se un file VHD non esiste nell'archiviazione Blob, tramite questo elemento viene definito il percorso del nuovo VHD creato al momento dell'aggiunta del nuovo disco.

Esempio:

http://example.blob.core.windows.net/disks/mydatadisk.vhd

SourceMediaLink

Facoltativo. Se il disco che viene aggiunto è già registrato nella sottoscrizione oppure il VHD per il disco non esiste nell'archiviazione Blob, questo elemento viene ignorato. Se il file VHD esiste nell'archiviazione Blob, tramite questo elemento viene definito il percorso del VHD e da quest'ultimo viene registrato un disco e collegato alla macchina virtuale.

Contiene i parametri utilizzati per creare il disco del sistema operativo per una macchina virtuale.

 

Nome elemento Descrizione

HostCaching

Facoltativo. Specifica la modalità di memorizzazione nella cache del disco del sistema operativo. Questa impostazione influisce sulla coerenza e sulle prestazioni del disco.

I valori possibili sono:

  • ReadOnly

  • ReadWrite

Il valore predefinito è ReadWrite.

noteNota
La modifica di questo valore comporta il riavvio della macchina virtuale.

DiskLabel

Facoltativo. Specifica la descrizione del disco.

DiskName

Obbligatorio se per la creazione di una macchina virtuale viene utilizzato un disco esistente. Specifica il nome di un disco nuovo o esistente. Se per un disco nuovo non viene specificato questo elemento, verrà assegnato un nome univoco costituito da una combinazione di nome della distribuzione, nome del ruolo e numero di identificazione.

Il nome del disco può contenere unicamente caratteri alfanumerici, caratteri di sottolineatura, punti o trattini. La lunghezza del nome non deve superare i 256 caratteri. Il nome non deve terminare con un punto o un trattino.

MediaLink

Obbligatorio se la macchina virtuale viene creata a partire da un'immagine della piattaforma. Specifica il percorso del file VHD creato quando viene specificata un'immagine della piattaforma da SourceImageName. Questo elemento non viene utilizzato se la macchina virtuale viene creata a partire da un disco esistente.

Esempio:

http://contoso.blob.core.windows.net/disks/mydisk.vhd

SourceImageName

Facoltativo. Specifica il nome dell'immagine da utilizzare per la creazione della macchina virtuale. È possibile specificare un'immagine utente o un'immagine della piattaforma. Un'immagine è sempre associata a un VHD, vale a dire un file con estensione vhd archiviato come BLOB di pagine in un account di archiviazione in Azure. Se si specifica un'immagine della piattaforma, viene creato un VHD associato e sarà necessario utilizzare l'elemento MediaLink per specificare il percorso nella risorsa di archiviazione in cui verrà posizionato il VHD.

RemoteSourceImageLink

Facoltativo. Specifica l'URI della posizione in cui viene archiviata un'immagine del sistema operativo utilizzata per creare la macchina virtuale. Può trattarsi di una posizione diversa dai repository dell'utente o dell'immagine della piattaforma presenti in Azure. Un'immagine è sempre associata a un VHD, vale a dire un file con estensione vhd archiviato come BLOB di pagine in un account di archiviazione in Azure. Se si specifica il percorso di un'immagine con questo elemento, viene creato un VHD associato e sarà necessario utilizzare l'elemento MediaLink per indicare la posizione della risorsa di archiviazione in cui verrà inserito il VHD. Se si utilizza questo elemento, SourceImageName non viene utilizzato.

L'elemento RemoteSourceImageLink è disponibile solo se si utilizza la versione 01.05.14 o una versione successiva.

Sistema operativo

Obbligatorio se si utilizza RemoteSourceImageLink. Specifica il tipo di sistema operativo installato nell'immagine.

I valori possibili sono:

  • Windows

  • Linux

Contiene una raccolta di estensioni di risorsa da installare nella macchina virtuale. Un'estensione di risorsa è un componente software installato nella macchina virtuale. Per installare le estensioni di risorsa, deve essere installato l'agente VM nella macchina virtuale. Per altre informazioni, vedere Gestire le estensioni.

 

Nome elemento Descrizione

ResourceExtensionReference

Obbligatorio. Specifica le proprietà di un'estensione di risorsa che devono essere installate nella macchina virtuale.

ReferenceName

Obbligatorio. Specifica il nome di riferimento dell'estensione di risorsa.

Publisher

Obbligatorio. Specifica il nome dell'editore che ha creato l'estensione di risorsa. È possibile utilizzare Elencare le estensioni delle risorse per trovare il nome dell'editore di un'estensione di risorsa.

Nome

Obbligatorio. Specifica il nome dell'estensione di risorsa. È possibile utilizzare Elencare le estensioni delle risorse per trovare i nomi di estensioni di risorsa disponibili.

Version

Obbligatorio. Specifica la versione dell'estensione di risorsa. È possibile impostare questo valore su * per utilizzare l'ultima versione dell'estensione. Se l'estensione è stata aggiunta o aggiornata recentemente, è necessario verificare che il valore di ReplicationCompleted sia impostato su true per poter utilizzare la versione dell'estensione. Per determinare lo stato della replica e le versioni disponibili dell'estensione, è possibile utilizzare Elencare le versioni dell'estensione di una risorsa.

ResourceExtensionParameterValues

Facoltativo. Contiene una raccolta di parametri passati all'estensione di risorsa quando viene installata.

State

Facoltativo. Specifica lo stato dell'estensione di risorsa. Quando viene creata una macchina virtuale, l'unico stato che è possibile specificare è enable, ovvero il valore predefinito se non viene utilizzato questo elemento. Per altre informazioni sulla disabilitazione o la rimozione di un'estensione, vedere Aggiornare il ruolo.

Contiene una raccolta di parametri passati all'estensione di risorsa quando viene installata.

 

Nome elemento Descrizione

ResourceExtensionParameterValue

Obbligatorio. Specifica la chiave, il valore e il tipo del parametro.

Chiave

Obbligatorio. Specifica la chiave del parametro.

Valore

Obbligatorio. Specifica il valore con codifica Base 64 del parametro. Se la configurazione dell'estensione è in formato XML, questo valore viene convalidato utilizzando lo schema pubblico o privato. Lo schema utilizzato dipende dal valore di Type.

Se invece la configurazione dell'estensione è in formato JSON, questo valore deve includere un oggetto JSON valido. Non è possibile utilizzare gli schemi pubblici o privati per convalidare l'oggetto. Per utilizzare un oggetto JSON, il numero di versione deve essere 2014-04-01 o successivo.

Tipo

Obbligatorio. Specifica il tipo dell'estensione di risorsa.

I valori possibili sono:

  • Public

  • Private

Se questo valore è impostato su Private, il parametro non verrà restituito dall'operazione Get Deployment. È possibile specificare solo un parametro pubblico e uno privato per un massimo di due parametri.

Contiene un elenco di server DNS da associare alla macchina virtuale.

 

Nome elemento Descrizione

DnsServers

Obbligatorio. Contiene i parametri che specificano i server DNS da utilizzare per la macchina virtuale.

DnsServer

Obbligatorio. Contiene gli elementi Name e Address del server DNS.

Nome

Obbligatorio. Specifica il nome del server DNS.

Address

Obbligatorio. Specifica l'indirizzo IP del server DNS.

Contiene un elenco dei dispositivi di bilanciamento del carico interni che possono essere assegnati a endpoint di input.

 

Nome elemento Descrizione

LoadBalancer

Obbligatorio. Specifica gli attributi di un dispositivo di bilanciamento del carico interno.

Nome

Obbligatorio. Specifica il nome di un dispositivo di bilanciamento del carico interno.

FrontendIpConfiguration

Obbligatorio. Specifica la configurazione per l'indirizzo IP virtuale fornito dal dispositivo di bilanciamento del carico.

Tipo

Obbligatorio. Specifica il tipo di indirizzo IP virtuale fornito dal dispositivo di bilanciamento del carico. L'unico valore consentito è Private.

SubnetName

Obbligatorio se la distribuzione è presente in una rete virtuale e se viene assegnato un elemento StaticVirtualNetworkIPAddress. Specifica la subnet della rete virtuale utilizzata dal dispositivo di bilanciamento del carico. L'indirizzo IP virtuale gestito dal dispositivo di bilanciamento del carico è contenuto in questa subnet.

StaticVirtualNetworkIPAddress

Facoltativo. Specifica un indirizzo IP virtuale utilizzato dal dispositivo di bilanciamento del carico nella subnet della rete virtuale.

Nella risposta sono inclusi un codice di stato HTTP e un set di intestazioni per la risposta.

Un'operazione completata correttamente restituisce il codice di stato 202 (Accettato). Per informazioni sui codici di stato, vedere Codici di stato e di errore relativi alla gestione dei servizi.

Nella risposta per questa operazione sono incluse le intestazioni riportate di seguito; inoltre, possono essere incluse intestazioni HTTP standard aggiuntive. Tutte le intestazioni standard sono conformi alla specifica del protocollo HTTP/1.1.

 

Intestazione della risposta Descrizione

x-ms-request-id

Valore che identifica in modo univoco una richiesta effettuata nel servizio di gestione.

È inoltre possibile creare distribuzioni di macchine virtuali utilizzando le risorse seguenti:

Quando si crea una distribuzione di una macchina virtuale, assicurarsi che il servizio cloud e il disco o l'immagine da utilizzare si trovino nella stessa area. Ad esempio, se il servizio cloud è stato creato nell'area West US, anche il disco o l'immagine utilizzata deve trovarsi in un account di archiviazione nell'area West US.

Per eseguire questo esempio, sostituire i valori delle variabili seguenti:

 

Variabile Valore

Thumbprint

Specificare un'identificazione digitale di un certificato di gestione che è stato caricato per consentire l'esecuzione di operazioni in Azure. Per altre informazioni, vedere Creare e caricare un certificato di gestione per Azure.

SubscriptionId

Specificare l'identificatore di sottoscrizione necessario per trovare il servizio cloud appropriato. Per trovare l'identificatore di sottoscrizione, fare clic su Impostazioni nel portale di gestione.

ServiceName

Specificare il nome del servizio cloud esistente in cui si desidera distribuire la macchina virtuale. È possibile utilizzare l'operazione List Cloud Service per trovare i nomi di servizi esistenti. È possibile creare un servizio cloud utilizzando il portale di gestione, l'operazione Create Cloud Service o il cmdlet New-AzureService.

DeploymentName

Specificare un nome per la nuova distribuzione.

DeploymentLabel

Specificare un identificatore per la distribuzione. Questa etichetta può essere utilizzata per motivi di rilevamento.

UserName

Specificare un nome per l'account amministratore nella macchina virtuale.

RoleName

Specificare un nome per il ruolo. In questo esempio il nome del ruolo viene utilizzato anche come nome del computer.

SourceImage

Specificare il nome dell'immagine della piattaforma che si desidera utilizzare per effettuare il provisioning della macchina virtuale. È possibile utilizzare l'operazione Elenco delle immagini del sistema operativo per ottenere i nomi di immagini di piattaforme disponibili nell'archivio immagini.

OSVhdPath

Specificare il percorso nel servizio di archiviazione di Azure in cui verrà archiviato il disco del sistema operativo creato. Per altre informazioni, vedere la pagina relativa alla modalità di creazione di un account di archiviazione.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using System.Xml;
using System.Security.Cryptography.X509Certificates;
using System.Net;
using System.IO;

namespace CreateVirtualMachineDeployment
{
  class Program
  {
    private static XNamespace wa = "http://schemas.microsoft.com/windowsazure";
    private const string Thumbprint = "<thumbprint-of-management-certificate>";
    private const string SubscriptionId = "<identifier-of-subscription>";
    private const string Version = "2013-08-01";
    private const string ServiceName = "<name-of-existing-service>";
    private const string DeploymentName = "<name-of-new-deployment>";
    private const string DeploymentLabel = "<label-of-deployment>";
    private const string DeploymentSlot = "production";
    private const string UserName = "<name-of-user-account>";
    private const string RoleName = "<name-of-virtual-machine>";
    private const string SourceImage = "<name-of-platform-image>";
    private const string OSVhdPath = "<storage-path-of-operating-system-disk>";

    // Gets or sets the certificate that matches the Thumbprint value.
    private static X509Certificate2 Certificate { get; set; }

    static void Main(string[] args)
    {
      Certificate = GetStoreCertificate(Thumbprint);

      // Create the uri for the request
      string uriFormat = "https://management.core.windows.net/{0}/services/hostedservices/{1}/deployments";
      Uri uri = new Uri(String.Format(uriFormat, SubscriptionId, ServiceName));

      Console.WriteLine("Enter the administrator password:");
      string AdminPassword = Console.ReadLine();

      // Create the request to add a new Virtual Machine deployment
      XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
      XDocument requestBody = new XDocument(
        new XDeclaration("1.0", "UTF-8", "no"),
        new XElement(wa + "Deployment",
          new XElement(wa + "Name", DeploymentName),
          new XElement(wa + "DeploymentSlot", DeploymentSlot),
          new XElement(wa + "Label", DeploymentLabel),
          new XElement(wa + "RoleList",
            new XElement(wa + "Role",
              new XElement(wa + "RoleName", RoleName),
              new XElement(wa + "RoleType", "PersistentVMRole"),
              new XElement(wa + "ConfigurationSets",
                new XElement(wa + "ConfigurationSet",
                  new XAttribute(xsi + "type", "WindowsProvisioningConfigurationSet"),
                  new XElement(wa + "ConfigurationSetType", "WindowsProvisioningConfiguration"),
                  new XElement(wa + "ComputerName", RoleName),
                  new XElement(wa + "AdminPassword", AdminPassword),
                  new XElement(wa + "AdminUsername", UserName))),
              new XElement(wa + "OSVirtualHardDisk",
                new XElement(wa + "MediaLink", OSVhdPath),
                new XElement(wa + "SourceImageName", SourceImage))))));

      // Submit the request and get the response
      HttpWebResponse response = InvokeRequest(uri, "POST", requestBody);

      HttpStatusCode statusCode = response.StatusCode;
      Console.WriteLine("The status of the operation: {0}", statusCode.ToString());
      Console.Write("Press any key to continue:");
      Console.ReadKey();
    }

    // Gets the certificate matching the thumbprint from the local store.
    // Throws an ArgumentException if a matching certificate is not found.
    private static X509Certificate2 GetStoreCertificate(string thumbprint)
    {
      List<StoreLocation> locations = new List<StoreLocation> 
      { 
        StoreLocation.CurrentUser, 
        StoreLocation.LocalMachine 
      };

      foreach (var location in locations)
      {
        X509Store store = new X509Store("My", location);
        try
        {
          store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
          X509Certificate2Collection certificates = store.Certificates.Find(
            X509FindType.FindByThumbprint, thumbprint, false);
          if (certificates.Count == 1)
          {
            return certificates[0];
          }
        }
        finally
        {
          store.Close();
        }
      }
      throw new ArgumentException(string.Format(
        "A Certificate with Thumbprint '{0}' could not be located.", thumbprint));
    }

    // Add the request headers and get the response from the request
    private static HttpWebResponse InvokeRequest(Uri uri, string method, XDocument requestBody)
    {
      HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
      request.Method = method;
      request.Headers.Add("x-ms-version", Version);
      request.ClientCertificates.Add(Certificate);
      request.ContentType = "application/xml";

      if (requestBody != null)
      {
        using (Stream requestStream = request.GetRequestStream())
        {
          using (StreamWriter streamWriter = new StreamWriter(
            requestStream, System.Text.UTF8Encoding.UTF8))
          {
            requestBody.Save(streamWriter, SaveOptions.DisableFormatting);
          }
        }
      }

      HttpWebResponse response;
      try
      {
        response = (HttpWebResponse)request.GetResponse();
      }
      catch (WebException ex)
      {
        response = (HttpWebResponse)ex.Response;
      }
      response.Close();
      return response;
    }
  }
}

Il documento è risultato utile?
(1500 caratteri rimanenti)
Grazie per i commenti inviati.
Mostra:
© 2014 Microsoft