2

我正在尝试对新的Azure Scheduler API进行一些调用。但是,我的所有请求都返回此错误:

<Error xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <Code>AuthenticationFailed</Code>
  <Message>The server failed to authenticate the request. Verify that the certificate is valid and is associated with this subscription.</Message>
</Error>

我很确定我的所有设置都正确,因为我可以使用相同的代码和证书调用Azure Service Management API

我用来将证书附加到 Web 请求的代码来自MSDN Sample。我尝试进行的调度程序 API 调用是检查名称可用性、创建云服务和创建作业集合。

我还验证了我的订阅对于调度程序的预览是有效的。

这是我尝试过的请求示例:

创建云服务

请求 通过向服务管理 API 租户的 CloudServices OData 集合提交 HTTP PUT 操作来创建云服务。用您的订阅 ID 和云服务 ID 替换。

因此,为此我创建了一个 Web 请求,指向:

https://management.core.windows.net/[MySubId]/cloudServices/[MyNewServiceName]

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(requestUri);

// Define the requred headers to specify the API version and operation type.
request.Headers.Add("x-ms-version", "2012-03-01");
request.Method = "PUT";
request.ContentType = "application/xml";

接下来,我添加文档中指定的请求正文:

<CloudService xmlns:i='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://schemas.microsoft.com/windowsazure'>
  <Label>[MyServiceName]</Label>
  <Description>testing</Description>
  <GeoRegion>uswest</GeoRegion>
</CloudService>

最后,我将订阅时使用的证书添加到帐户中。

// Attach the certificate to the request.
request.ClientCertificates.Add(certificate);

我试图得到响应,但我得到了上面显示的错误。

顺便说一句 - 我也尝试过不同的区域,认为这可能是一个区域问题,因为并非所有区域都支持调度程序,但我仍然得到相同的响应。

4

1 回答 1

0

您需要首先通过调用 (PUT) 在您的应用程序中注册调度程序:

<subscription id>/services?service=scheduler.JobCollections&action=register

如果您想在 .NET 中执行此操作,您可以使用新的管理库:

var schedulerServiceClient = new SchedulerManagementClient(credentials);
var result = schedulerServiceClient.RegisterResourceProvider();

Console.WriteLine(result.RequestId);
Console.WriteLine(result.StatusCode);
Console.ReadLine();

更多细节: http: //fabriccontroller.net/blog/posts/a-complete-overview-to-get-started-with-the-windows-azure-scheduler/

于 2013-11-07T08:53:22.270 回答