I have got many for the Azure management APIs to work with the code below except for the GetRole for Virtual Machines. Here is the doc for this api call: https://msdn.microsoft.com/en-us/library/azure/jj157193.aspx
Here is the code that I am trying to execute:
static void Main(string[] args)
{
Program p = new Program();
p.MakeRequest();
}
public void MakeRequest()
{
string strThumbprint = "{thumbprint}";
X509Certificate2 certificate = GetStoreCertificate(strThumbprint);
string strRequestURI = "https://management.core.windows.net/{subscription}/services/hostedservices/{cloud-service}/deployments/{deployment}/roles/{rolename}";
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(strRequestURI);
request.ClientCertificates.Add(certificate);
request.ContentType = "application/xml";
request.Headers.Add("x-ms-version", "2015-04-01");
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Console.WriteLine("Status Code: " + response.StatusCode.ToString());
Stream receiveStream = response.GetResponseStream();
Encoding encode = Encoding.GetEncoding("utf-8");
StreamReader readStream = new StreamReader(receiveStream, encode);
Console.WriteLine(readStream.ReadToEnd());
response.Close();
}
catch(Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}
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));
}
EDIT: I have now fixed the URL but I am receiving 400 - Bad Request.
Following the code that I previously posted, I was able to get this to run by using the cloud service name as the deployment. It appears that Microsoft is having issues being consistent with their terminology for the MSDN documentation and what is on the Azure portal.