2014-11-05 6 views
12

저는 Azure 웹 사이트의 자동 배치 (Azure에서 웹 사이트 생성 포함)에 대한 코드를 작성 중입니다. 나는 Nuget에서 Azure Management Libraries와 Azure Resource Management Libraries를 사용하고 있습니다. 그것의 대부분은 자리에 있지만, 내가 본 적이있는 API를 통해 "항상 켜기"속성을 활성화하는 방법을 찾을 수 없었습니다. 이 등록 정보는 웹 사이트의 구성 탭에있는 푸른 관리 포털을 통해 설정할 수 있습니다.관리/리소스 관리 API를 통해 Always On Azure 웹 사이트를 항상 활성화 할 수 있습니까?

나는 확인했습니다

  1. 속성은 MSDN을 참조 : 항상 켜기에 대한 참조가 있다면 http://msdn.microsoft.com/en-us/library/azure/dn236426.aspx
  2. PowerShell을 API를 (GET-azureresource가 얻을 - azurewebsite, ...)보고 (해당 없음)
  3. REST는 Fiddler를 통해 관리 포털이 보내는 것을 호출합니다. 여기에는 https://manage.windowsazure.com/Websites/UpdateConfig으로가는 POST의 Always On에 대한 참조가 있습니다 (이는 알고있는 한 관리 또는 자원 관리 API의 일부가 아닙니다). 전송되는 JSON 본문의 정확한 경로는/siteConfig/AlwaysOn입니다.

그럼, "공식"API를 통해 항상 켜기를 사용/사용 중지 할 수 있습니까?

감사합니다.

답변

11

나는 해결책을 찾았다 고 생각합니다!

리소스 관리 API를 사용하여 siteConfig 개체를 통해 AlwaysOn 속성을 설정할 수 있습니다. PowerShell에서 :

Set-AzureResource -ApiVersion 2014-04-01 -PropertyObject @{"siteConfig" = @{"AlwaysOn" = $false}} -Name mywebsite -ResourceGroupName myrg -ResourceType Microsoft.Web/sites

.NET의 자원 관리 API에이 유사 할 것입니다.

결과 REST 호출

, https://management.azure.com/subscriptions/xxx/resourcegroups/yyy/providers/Microsoft.Web/sites/zzz?api-version=2014-04-01 에 : 업데이트 된 ARM을 사용하여 { "location": "West Europe", "properties": { "siteConfig": { "AlwaysOn": true } }, "tags": {} }

+1

실제로이 점이 나에게도 효과적이었습니다. 감사합니다. 이것을 올바른 답으로 표시해야합니다 :) – dprothero

+0

나는 이것을 작동시킬 수 없습니다. 웹 사이트를 중지하는 것과 같은 전제 조건이 있습니까? –

+0

또한보십시오 : http://stackoverflow.com/a/37149251/29,'siteConfig' 구획을 두는 다른 장소를 보여줍니다. –

2

(푸른 리소스 관리자) 파워 쉘, V1.0 +

가져-AzureRmResource : https://msdn.microsoft.com/en-us/library/mt652503.aspx

설정-AzureRmResource : https://msdn.microsoft.com/en-us/library/mt652514.aspx

# Variables - substitute your own values here 
$ResourceGroupName = 'My Azure RM Resource Group Name' 
$WebAppName = 'My Azure RM WebApp Name' 
$ClientAffinityEnabled = $false 

# Property object for nested, not exposed directly properties 
$WebAppPropertiesObject = @{"siteConfig" = @{"AlwaysOn" = $true}} 

# Variables 
$WebAppResourceType = 'microsoft.web/sites' 

# Get the resource from Azure (consider adding sanity checks, e.g. is $webAppResource -eq $null) 
$webAppResource = Get-AzureRmResource -ResourceType $WebAppResourceType -ResourceGroupName $ResourceGroupName -ResourceName $WebAppName 

# Set a directly exposed property, in this case whether client affinity is enabled 
$webAppResource.Properties.ClientAffinityEnabled = $ClientAffinityEnabled 

# Pass the resource object into the cmdlet that saves the changes to Azure 
$webAppResource | Set-AzureRmResource -PropertyObject $WebAppPropertiesObject -Force 
+0

이 오류가 발생합니다. Get-AzureRmResource : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다. 라인에서 1 문자 : 1 + 위젯 - AzureRmResource + ~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified (:) [위젯 - AzureRmResource]는 NullReferenceException + FullyQualifiedErrorId : System.NullReferenceException, Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.GetAzureResourceCmdl 및 –

0

.Net API을 사용하는 사용자에게는

var cfg = await websiteClient.Sites.GetSiteConfigAsync(site.ResourceGroup, site.Name, cancellationToken).ConfigureAwait(false); 
if (!cfg.AlwaysOn.GetValueOrDefault()) 
{ 
    cfg.AlwaysOn = true; 
    await websiteClient.Sites.UpdateSiteConfigAsync(site.ResourceGroup, site.Name, cfg, cancellationToken).ConfigureAwait(false); 
}