c# - management - Obtener función: la API Azure devuelve(400) Solicitud incorrecta
portal azure (1)
Siguiendo el código que publiqué anteriormente, pude hacer que esto se ejecutara usando el nombre del servicio en la nube como implementación. Parece que Microsoft tiene problemas para ser coherente con su terminología para la documentación de MSDN y lo que está en el portal de Azure.
Tengo muchas cosas para que las API de administración de Azure funcionen con el siguiente código, excepto el GetRole para máquinas virtuales. Aquí está el documento para esta llamada de API: https://msdn.microsoft.com/en-us/library/azure/jj157193.aspx
Aquí está el código que estoy tratando de ejecutar:
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));
}
EDITAR: ahora he arreglado la URL pero estoy recibiendo 400 - Solicitud incorrecta.