2017-01-18 109 views
0
var client = new HttpClient(); 
client.DefaultRequestHeaders.Add("x-ms-version", "2016-05-31"); 
var content = new FormUrlEncodedContent(new KeyValuePair<string, string>[] 
{ 
    new KeyValuePair<string, string>("api-version", "2016-08-01") 
}); 
content.Headers.ContentType = new MediaTypeHeaderValue("application/xml"); 
var response = client.PostAsync("https://management.azure.com/subscriptions/SuscriptionID/resourceGroups/Default-Web-SoutheastAsia/providers/Microsoft.Web/sites/MyAppName/stop?", content); 

這是我做出Azure的Web應用程序REST API的調用,但我得到的StatusCode:錯誤請求400錯誤請求而蔚藍的Web呼叫REST API應用

+0

你也應該閱讀迴應,它會告訴你更多。 – juunas

+0

而你的內容類型肯定不是application/xml,它是'application/x-www-form-urlencoded'。也許你想要設置Accept頭? – juunas

回答

0

有一些問題與您的代碼:

  • 您在混合Azure Service Management APIAzure Resource Manager (ARM) API。停止Web應用程序的API是資源管理器API,因此您不需要提供x-ms-version
  • 您錯過了請求中的Authorization標題。 ARM API請求需要授權頭。請參閱關於如何執行ARM API請求的鏈接:https://docs.microsoft.com/en-us/rest/api/gettingstarted/

在此基礎上,我修改您的代碼:

static async void StopWebApp() 
    { 
     var subscriptionId = "<your subscription id>"; 
     var resourceGroupName = "<your resource group name>"; 
     var webAppName = "<your web app name>"; 
     var token = "<bearer token>"; 
     var url = string.Format("https://management.azure.com/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Web/sites/{2}/stop?api-version=2016-08-01", subscriptionId, resourceGroupName, webAppName); 
     var client = new HttpClient(); 
     client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); 
     var t = await client.PostAsync(url, null); 
     var response = t.StatusCode; 
     Console.WriteLine(t.StatusCode); 
    } 

請嘗試使用此代碼。假設你已經獲得適當的令牌,代碼應該工作。

+0

謝謝你的答覆。我有令牌問題。你可以看看這個問題,請。.. http://stackoverflow.com/questions/41736162/unauthorized-when-try-to-get-token-using-arm -api –

+0

我得到錯誤:: {「error」:{「code」:「AuthorizationFailed」,「message」:「對象id爲'someId'的客戶'someId'沒有授權執行操作'Microsoft.Web/sites/stop/action'over scope'/subscriptions/Subscriptionid/resourceGroups/Default-Web-SoutheastAsia/providers/Microsoft.Web/sites/Webapp'。「}} –

+0

您正在遇到'基於角色的訪問控制'。基本上你得到這個錯誤是因爲用戶(在你的情況下應用程序或Azure條款中的「服務主體」)沒有執行此操作的權限。請參閱以下鏈接,瞭解如何分配權限:https://docs.microsoft.com/en-us/azure/active-directory/role-based-access-control-configure。爲了簡單起見,我建議你將有問題的用戶分配給「Contributor」角色。 –

相關問題