Если вы используете GraphServiceClient graphClient = new GraphServiceClient(authProvider);
, это выдаст эту ошибку.
Копаясь в SDK, я обнаружил, что в HttpProvider есть метод JsonConvert.DeserializeObject<Report>(inputString)
.
Вот его информация :
/// <summary>
/// Deserializes the JSON string to an object of the specified type.
/// </summary>
/// <typeparam name="T">The deserialization type.</typeparam>
/// <param name="inputString">The JSON string to deserialize.</param>
/// <returns>The deserialized object.</returns>
T DeserializeObject<T>(string inputString);
Очевидно, что это является причиной ошибки. Его нельзя десериализовать, потому что это CSV, а не JSON данные.
Я думаю, что это ошибка Graph SDK в настоящее время.
В качестве временного решения вы можете напрямую вызвать конечную точку API для получите данные.
Или вы можете реализовать свой собственный сериализатор в своем коде.
См. следующий пример:
HttpProvider provider = new HttpProvider(new MySerializer());
var graphServiceClient = new GraphServiceClient(authProvider, provider);
var x = await graphClient.Reports.GetOneDriveActivityFileCounts("D30").Request().GetAsync();
И MySerializer () выглядит следующим образом:
internal class MySerializer : ISerializer
{
public T DeserializeObject<T>(Stream stream)
{
throw new NotImplementedException();
}
public T DeserializeObject<T>(string inputString)
{
//implement your logical here
return default(T);
}
public string SerializeObject(object serializeableObject)
{
//implement your logical here
return "TEST MESSAGE";
}
}
inputString
- это содержимое отчета csv. Вы могли бы справиться с этим самостоятельно. И тогда он вернется к «х», который вы определили.