gpt4 book ai didi

azure - 为什么调用服务管理 API 可以工作,但调用调度程序 API 却失败?

转载 作者:行者123 更新时间:2023-12-03 00:33:43 25 4
gpt4 key购买 nike

我正在尝试调用新的 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 。我尝试进行的 Scheduler API 调用包括“检查名称可用性”、“创建云服务”和“创建作业集合”。

我还验证了我的调度程序预览订阅处于事件状态。

以下是我尝试过的请求示例:

Create Cloud Service

Request A cloud service is created by submitting an HTTP PUT operation to the CloudServices OData collection of the Service Management API Tenant.Replace with your subscription ID and with your cloud service 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);

我尝试获取响应,但收到上面显示的错误。

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

最佳答案

您需要首先通过调用 (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/

关于azure - 为什么调用服务管理 API 可以工作,但调用调度程序 API 却失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19822909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com