发布azure new rest api的帖子请求(资源管理器)

时间:2016-04-27 15:51:04

标签: c# rest azure

我想使用帖子Uri启动我的VM,如https://msdn.microsoft.com/en-us/library/azure/mt163628.aspx

所述

由于我的请求中没有身体,因此我得到了403。我可以毫无问题地获取请求。这是我的代码

public void StartVM()
    {
        string subscriptionid = ConfigurationManager.AppSettings["SubscriptionID"];
        string resssourcegroup = ConfigurationManager.AppSettings["ressourgroupename"];
        string vmname = ConfigurationManager.AppSettings["VMName"];
        string apiversion = ConfigurationManager.AppSettings["apiversion"];
        var reqstring = string.Format(ConfigurationManager.AppSettings["apirestcall"] + "subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Compute/virtualMachines/{2}/start?api-version={3}", subscriptionid, resssourcegroup, vmname, apiversion);
        string result = PostRequest(reqstring);

    }
public string PostRequest(string url)
    {
        string content = null;
        using (HttpClient client = new HttpClient())
        {
            StringContent stringcontent = new StringContent(string.Empty);
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            string token = GetAccessToken();
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
            HttpResponseMessage response = client.PostAsync(url, stringcontent).Result;
            if (response.IsSuccessStatusCode)
            {
                content = response.Content.ReadAsStringAsync().Result;
            }

        }
        return content;
    }

我也在PostRequest中试过这个

 var values = new Dictionary<string, string>
            {
               { "api-version", ConfigurationManager.AppSettings["apiversion"] }
            };

            var posteddata = new FormUrlEncodedContent(values);
 HttpResponseMessage response = client.PostAsync(url, posteddata).Result;

使用网址= string.Format(ConfigurationManager.AppSettings["apirestcall"] + "subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Compute/virtualMachines/{2}/start", subscriptionid, resssourcegroup, vmname);

我得到400错误请求

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。需要在Azure中添加角色以允许启动/停止VM。这就是为什么我收到4.3禁止。

谢谢