C# Graph API TranslateExchangeIds().PostAsync() HTTP 方法不允许

Posted

技术标签:

【中文标题】C# Graph API TranslateExchangeIds().PostAsync() HTTP 方法不允许【英文标题】:C# Graph API TranslateExchangeIds().PostAsync() HTTP Method not allowed 【发布时间】:2022-01-18 09:27:37 【问题描述】:

我正在使用 C# 包到 Microsoft Graph API。我可以从 Graph API 读取消息。现在我想翻译如下所示的消息 ID: https://docs.microsoft.com/de-de/graph/api/user-translateexchangeids?view=graph-rest-1.0&tabs=csharp

var translatedIds = client.Users[firstMailboxElement.SourcePostbox]
  .TranslateExchangeIds(toBeTranslated, ExchangeIdFormat.RestImmutableEntryId, ExchangeIdFormat.RestId)
  .Request()
  .PostAsync()
  .Result;

当我这样做时,我得到以下异常:

System.AggregateException
One or more errors occurred. 
(Code: Request_BadRequest Message: Specified HTTP method is not allowed for the request target. 
Inner error: AdditionalData: date: 2021-12-15T06:52:45 [...])

这似乎没有意义,因为我无法更改 HTTP 方法。

任何想法如何解决这个问题?

【问题讨论】:

【参考方案1】:
var scopes = new[]  "https://graph.microsoft.com/.default" ;
var tenantId = "your_tenant_name.onmicrosoft.com";
var clientId = "azure_ad_app_client_id";
var clientSecret = "client_secret";
var options = new TokenCredentialOptions

    AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
;
var clientSecretCredential = new ClientSecretCredential(
    tenantId, clientId, clientSecret, options);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);
var inputIds = new List<String>()

    "asdf"
;
var sourceIdType = ExchangeIdFormat.RestId;
var targetIdType = ExchangeIdFormat.RestImmutableEntryId;
var res = graphClient.Users["user_id"].TranslateExchangeIds(inputIds, targetIdType, sourceIdType).Request().PostAsync();
var a = res.Result;

【讨论】:

究竟应该修复什么?您也调用 PostAsync() 但它返回不同的异常。【参考方案2】:

当异常发生时,我发现firstMailboxElement.SourcePostbox 为空。 所以调用到client.Users[null],所以请求的URL不完整。

【讨论】:

我的测试结果是因为我使用了错误的inputIds作为输入参数。这没有意义,因为它可以成功获得响应,我想在我的帖子中展示我如何设置请求,你可以比较你和我的。无论如何,你找到了问题,恭喜。

以上是关于C# Graph API TranslateExchangeIds().PostAsync() HTTP 方法不允许的主要内容,如果未能解决你的问题,请参考以下文章

无法根据访问令牌对用户进行身份验证 - MS Graph API C#

使用 microsoft graph api c# 创建在线会议时出现 404 错误,但未登录 AzureActiveDirectory

如何在 C# asp.net 中管理 Facebook api 响应数据?

C# 中的 Microsoft Graph 搜索筛选字符串

Delphi 与 Graph.cool API?

Office Graph API 和查询 Office Graph 之间的区别