如何在C#中使用REST API获取Azure批处理池和作业的列表?

如何在C#中使用REST API获取Azure批处理池和作业的列表?,c#,azure,rest,http-headers,azure-batch,C#,Azure,Rest,Http Headers,Azure Batch,使用RESTAPI,我想获得批处理池和作业的列表。 根据文件: 池-获取| Microsoft文档- 作业-获取| Microsoft文档- 获取作业列表的API是get{batchUrl}/jobs?API版本=2019-08-01.10.0,获取池的API是get{batchUrl}/pools?API版本=2019-08-01.10.0 在C#中,我是这样做的: client.DefaultRequestHeaders.Add(“授权”、“承载”+\u访问令牌); 使用(var respo

使用RESTAPI,我想获得批处理池和作业的列表。
根据文件:
池-获取| Microsoft文档-
作业-获取| Microsoft文档-

获取作业列表的API是
get{batchUrl}/jobs?API版本=2019-08-01.10.0
,获取池的API是
get{batchUrl}/pools?API版本=2019-08-01.10.0

在C#中,我是这样做的:

client.DefaultRequestHeaders.Add(“授权”、“承载”+\u访问令牌);
使用(var responseGet=client.GetAsync(api.Result)//HttpClient-client
{
if(响应集发布成功状态代码)
{
动态batchObjectsContent=JObject.Parse(responseGet.Content.ReadAsStringAsync().Result);
foreach(batchObjectsContent.value中的var batchObject)
{
添加(新的BatchObject{Id=BatchObject.Id,Url=BatchObject.Url,CreationTime=BatchObject.CreationTime,StateTransitionTime=BatchObject.StateTransitionTime});
}
}
}
获取池的完整API是
https://mybatch.westus2.batch.azure.com/pools?api-版本=2019-08-01.10.0
作业的api为
https://mybatch.westus2.batch.azure.com/jobs?api-版本=2019-08-01.10.0

Error message I am getting:
StatusCode=Unauthorized
ReasonPhrase="Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly."
error="invalid_audience", error_description="The access token has been obtained from wrong audience or resource 'https://management.azure.com/'. It should exactly match (including forward slash) with one of the allowed audiences 'https://batch.core.windows.net/'"
这就是我获取访问令牌的方式:
authenticationContext.AcquireTokenAsync(“https://management.azure.com/“,凭证)。Result.AccessToken。这适用于与
https://management.azure.com/


从这些错误中,我认为要么访问令牌有问题,要么标头有问题,要么两者都有问题。如何更正它们?

使用Azure批处理资源终结点获取令牌,用于对批处理服务的请求进行身份验证:

https://batch.core.windows.net/
使用以下代码:

private const string BatchResourceUri = "https://batch.core.windows.net/";
AuthenticationResult authResult = await authContext.AcquireTokenAsync(BatchResourceUri, new ClientCredential(ClientId, ClientKey));

请参阅此项。

使用Azure批处理资源终结点获取令牌,以验证对批处理服务的请求:

https://batch.core.windows.net/
使用以下代码:

private const string BatchResourceUri = "https://batch.core.windows.net/";
AuthenticationResult authResult = await authContext.AcquireTokenAsync(BatchResourceUri, new ClientCredential(ClientId, ClientKey));

请参阅此内容。

我们是否可以使用MSI身份验证而不是提供客户端ID和客户端密钥?以防其他人偶然发现此评论,此问题已在中得到回答。您可以使用MSI通过Batch SDK/REST进行身份验证。目前,您无法在批处理池上启用MSI,但如果您是从支持MSI的服务(即功能)发起请求,您应该能够进行身份验证。我们是否可以使用MSI身份验证而不是提供客户端ID和客户端密钥?以防其他人无意中发现此评论,此问题已在上得到回答。您可以使用MSI通过Batch SDK/REST进行身份验证。目前,您无法在批处理池上启用MSI,但如果您正从支持MSI的服务(即功能)启动请求,则应该能够进行身份验证。