JsonReaderException Обнаружено при получении MailBoxUsageDetails с Microsoft Graph - PullRequest
1 голос
/ 17 июня 2019

Я следую документации GetMailBoxUsageDetail, найденной в https://docs.microsoft.com/en-us/graph/api/reportroot-getmailboxusagedetail?view=graph-rest-1.0&tabs=cs, и получаю исключение JsonReaderException.

Полное сообщение об ошибке выглядит следующим образом: JsonReaderException: неожиданный символ, обнаруженный при разборе значения: R. Path '', строка 0, позиция 0.

Я подтвердил, что у меня есть соответствующие разрешения для приложения. Я также использовал Fiddler и вижу, что поток контента возвращается обратно клиентскому приложению, однако Microsoft Graph API, похоже, пытается десериализовать контент как Json, когда это не так.

    public IActionResult Index()
    {
        var report = GetMailBoxUsageDetailAsync().Result;
        return View();
    }


    public async Task<Report> GetMailBoxUsageDetailAsync(string period = "D7")
    {
        var graphClient = new GraphServiceClient(new MsalAuthenticationProvider());

        var report = await graphClient.Reports.GetMailboxUsageMailboxCounts(period)
            .Request()
            .GetAsync();

        return report;

     }

Я ожидаю, что возвращается потоковое содержимое со следующими заголовками: Дата обновления отчета, Имя участника-пользователя, Отображаемое имя, Удалено, Дата удаления, Дата создания, Дата последней активности, Количество элементов, Используемое хранилище (байт), Предупреждение о проблеме Квота (байт), Запретить квоту отправки (байт), Запретить квоту отправки / получения (байт), отчетный период

1 Ответ

1 голос
/ 17 июня 2019

Действительно, это, похоже, ошибка с десериализацией полезной нагрузки ответа, которая влияет на все конечные точки Отчеты об использовании почтовых ящиков

Может быть воспроизведено как минимум в msgraph-sdk-dotnetверсия 1.15.0

До тех пор, пока она не будет исправлена, в качестве альтернативы может рассматриваться следующее решение:

//Construct and send a request 
var requestUrl = graphClient.Reports.GetMailboxUsageMailboxCounts("D7").Request().RequestUrl;
var request = new HttpRequestMessage(HttpMethod.Get, requestUrl);
await graphClient.AuthenticationProvider.AuthenticateRequestAsync(request);
var response = await graphClient.HttpProvider.SendAsync(request);

// Get the csv report data
var csvData = await response.Content.ReadAsStringAsync();
...