以编程方式重新启动Azure虚拟机会生成404错误

时间:2012-10-24 19:24:33

标签: azure

我正在尝试通过REST interface重新启动/重新启动Azure虚拟机。

我通过Azure门户创建了一个虚拟机,它显示为在左侧的“虚拟机”选项卡下运行。

我用于此操作的网址如下:

https://management.core.windows.net/ {我的订阅-GUID} /服务/ hostedservices /的 cloudvm测试 /部署/的 cloudvm测试 /角色/的 cloudvm测试 /操作

您可以将“cloudvm-test”重复显示为托管服务名称,部署名称和角色名称,因为它是您在调用Get Hosted Service Properties时返回的xml中的显示方式。即使虚拟机不是经典的托管服务,它也会出现在这个xml中,因此我只使用我在那里找到的值。我担心的一个问题是我是否正确构建了URL。

无论如何,使用上面的URL,我按预期构建了我的请求,并POST了一个正文:

<RestartRoleOperation xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<OperationType>RestartRoleOperation</OperationType></RestartRoleOperation>

我收到的错误是404,说明“不支持资源服务名称hostedservices”。

并不是真的很重要,但我在Objective C中写作。如果你在C#中有一个例子,我可以处理它。

1 个答案:

答案 0 :(得分:4)

而不是.../roles/roleName/...您必须使用.../roleInstances/roleName ....(在Uri路径中将角色替换为 roleInstances )。

VM相关文档充满了这样的小错误。

顺便说一句,为了拥有虚拟机,您需要拥有“托管服务”。因此,如果您尝试使用REST API创建VM,您将发现必须指定现有的托管服务。因此,您首先必须创建托管服务,然后将虚拟机部署到该服务。这有点令人困惑,因为门户隐藏了我们的细节。但是,如果您转到旧门户,您将看到在您创建的每个虚拟VM后面实际存在托管服务。在您删除其中的所有虚拟机之前,该托管服务不会在新门户中显示为“云服务”...