0
我有几个持久虚拟机在Azure中,我想以编程方式在某些情况下启动/停止。但他们我已经手动启动或停止。有没有办法通过REST告诉Azure VM是否启动?
有没有一种方法可以通过REST API告诉VM是否启动?
我有几个持久虚拟机在Azure中,我想以编程方式在某些情况下启动/停止。但他们我已经手动启动或停止。有没有办法通过REST告诉Azure VM是否启动?
有没有一种方法可以通过REST API告诉VM是否启动?
您可以调用Get Deployment
操作(它也可以在您的永久虚拟机上工作),这会为您提供部署状态,您可以使用它来决定是否需要在虚拟机上执行操作。
class Program
{
static string subscriptionId = "subscription id";
static string certificateData = "Data from ManagementCertificate node in publish setting file ";
static string cloudServiceName = "name of the cloud service";
static X509Certificate2 cert = null;
static void Main(string[] args)
{
cert = new X509Certificate2(Convert.FromBase64String(certificateData));
Test2();
Console.ReadLine();
}
static void Test2()
{
string endpoint = string.Format("https://management.core.windows.net/{0}/services/hostedservices/{1}/deploymentslots/production", subscriptionId, cloudServiceName);
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(endpoint);
req.ClientCertificates.Add(cert);
req.ContentType = "application/xml";
req.Headers.Add("x-ms-version", "2013-03-01");
req.Method = "GET";
try
{
using (var resp = req.GetResponse())
{
using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
{
var responseData = sr.ReadToEnd();
Console.WriteLine(responseData);
}
}
}
catch (WebException webEx)
{
using (var resp = webEx.Response)
{
using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
{
var errorDetails = sr.ReadToEnd();
Console.WriteLine(errorDetails);
}
}
}
}
谢谢,但我似乎无法得到它的工作。如果我使用的是services/hostedservices/{0}/deployments/{1},那么我得不到有用的信息,如果在分段或生产中使用services/hostedservices/{0}/deploymentslots/{1},我会得到
ResourceNotFound
。你知道我该怎么称呼它吗? – Mark嗯......这很奇怪。我用一个控制台应用程序试了一下,我得到了正确的回应。我用我使用的代码更新了我的回复。 –
感谢堆。我使用的代码非常类似于你,但是当你工作时,我尝试了更多的测试,发现我传递的是实例名称而不是服务名称。 – Mark