批量请求添加用户私人联系人时出现问题

问题描述 投票:0回答:0

我尝试通过批量请求添加用户联系人。

问了谷歌后,我发现了这个: https://learn.microsoft.com/en-us/samples/azure-samples/graphapi-batching/batching-requests-to-msgraph/

我编写了一个类似示例的函数并得到了这个:

public static void importRelevantContactsToUserWithBatch(Manager manager)
{
        List<Contact> succesful = new List<Contact>();
        List<Contact> failed = new List<Contact>();

        int limit = 1;
        int counter = 0;

        var user = users.Where(x => x.Mail == manager.Email).FirstOrDefault();

        var contacts = getRelevantContactsForManager(manager);

        foreach (var contact in contacts)
        {
            var batchRequestContent = new BatchRequestContent();
            var requestUrl = graphServiceClient.Users[user.Id].Contacts.RequestUrl;
            System.Console.WriteLine($"RequestURL: {requestUrl}");
            var request = new HttpRequestMessage(HttpMethod.Post, requestUrl) 
            {
                Content = new StringContent(JsonConvert.SerializeObject(contact.toGraphContact()), Encoding.UTF8, "application/json")
            };
            System.Console.WriteLine(JsonConvert.SerializeObject(contact.toGraphContact()));
            var requestStep = new BatchRequestStep(counter.ToString(), request, null);
            batchRequestContent.AddBatchRequestStep(requestStep);
            var returnedResponse = graphServiceClient.Batch.Request().PostAsync(batchRequestContent);
            returnedResponse.Wait(-1);
            var response = returnedResponse.Result.GetResponseByIdAsync(counter.ToString());
            response.Wait(-1);

            if (response.Result.IsSuccessStatusCode)
            {
                succesful.Add(contact.toGraphContact());
                System.Console.WriteLine($"{contact.toGraphContact().Id} wurde hinzugefügt");
            }
            else
            {
                failed.Add(contact.toGraphContact());
                System.Console.WriteLine($"{contact.toGraphContact().Id} konnte nicht hinzugefügt werden");
            }

            counter++;
        }   

}

运行这段代码,我得到了一个 400 BadRequest 作为响应。

有人能给我提示我的问题在哪里我找不到它

提前致谢

租户是O365,请求使用应用程序认证并授予所有权限,通过批处理删除联系人工作正常所以我认为错误必须在这行内:

var requestUrl = graphServiceClient.Users[user.Id].Contacts.RequestUrl;
                System.Console.WriteLine($"RequestURL: {requestUrl}");
                var request = new HttpRequestMessage(HttpMethod.Post, requestUrl) 
                {
                    Content = new StringContent(JsonConvert.SerializeObject(contact.toGraphContact()), Encoding.UTF8, "application/json")
                };

序列化联系人 JSON:

{"AssistantName":null,"Birthday":null,"BusinessAddress":{"City":"Friesoythe","CountryOrRegion":"DE","PostalCode":"26169","State":"NIE","Street":"Zeppelinring 9","AdditionalData":null,"ODataType":null},"BusinessHomePage":"","BusinessPhones":null,"Children":null,"CompanyName":"Appel  ","Department":"","DisplayName":"Thomas Appel","EmailAddresses":[{"Address":"[email protected]","Name":"Thomas Appel ([email protected])","AdditionalData":null,"ODataType":null}],"FileAs":null,"Generation":null,"GivenName":"Thomas","HomeAddress":{"City":"Friesoythe","CountryOrRegion":"DE","PostalCode":"26169","State":"NIE","Street":"Zeppelinring 9","AdditionalData":null,"ODataType":null},"HomePhones":null,"ImAddresses":null,"Initials":null,"JobTitle":"","Manager":null,"MiddleName":null,"MobilePhone":null,"NickName":null,"OfficeLocation":"53,0191543°7,8857305","OtherAddress":null,"ParentFolderId":null,"PersonalNotes":null,"Profession":null,"SpouseName":null,"Surname":"Appel","Title":null,"YomiCompanyName":null,"YomiGivenName":null,"YomiSurname":null,"Extensions":null,"ExtensionsNextLink":null,"MultiValueExtendedProperties":null,"MultiValueExtendedPropertiesNextLink":null,"Photo":null,"SingleValueExtendedProperties":null,"SingleValueExtendedPropertiesNextLink":null,"Categories":["proALPHA_Export"],"ChangeKey":null,"CreatedDateTime":null,"LastModifiedDateTime":null,"Id":null,"ODataType":"microsoft.graph.contact","AdditionalData":null}
c# graph exchange-server bad-request batching
© www.soinside.com 2019 - 2024. All rights reserved.