我正在尝试对新的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);
我试图得到响应,但我得到了上面显示的错误。
顺便说一句 - 我也尝试过不同的区域,认为这可能是一个区域问题,因为并非所有区域都支持调度程序,但我仍然得到相同的响应。