You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Graph SDK v5.56(C#)从Microsoft Purview获取AuditLog查询

解决C# Graph SDK v5.56调用Purview AuditLog查询的问题

问题原因

Microsoft Graph SDK v5.56的正式版本尚未将/beta/security/auditLog/queries这个beta端点的相关实体类和API封装到graphServiceClient.Security下。直接使用WithUrl调用时,由于缺少对应的序列化模型,返回的数据无法被正确解析,导致看似返回0条结果(实际是未正确映射数据);同时默认SDK请求若未明确指定beta版本,也会影响请求有效性。

解决方案

通过以下步骤实现与Graph Explorer一致的请求效果:

1. 定义自定义实体类

由于SDK未内置相关模型,需手动定义与端点返回结构匹配的类:

using System.Text.Json.Serialization;

public class AuditLogQuery
{
    [JsonPropertyName("@odata.type")]
    public string ODataType { get; set; }
    public string Id { get; set; }
    public string DisplayName { get; set; }
    public string Description { get; set; }
    // 根据Graph Explorer返回的实际JSON字段,补充其他所需属性
}

public class AuditLogQueryCollectionResponse
{
    [JsonPropertyName("@odata.context")]
    public string ODataContext { get; set; }
    public List<AuditLogQuery> Value { get; set; }
}

2. 使用RequestAdapter发送请求

利用Graph SDK的RequestAdapter直接发送GET请求,明确指定beta端点并反序列化为自定义模型:

// 确保graphServiceClient已配置好权限凭证
var requestUrl = "https://graph.microsoft.com/beta/security/auditLog/queries";
var response = await graphServiceClient.RequestAdapter.GetAsync<AuditLogQueryCollectionResponse>(requestUrl);

// 处理返回结果
if (response?.Value != null && response.Value.Count > 0)
{
    foreach (var query in response.Value)
    {
        // 按需处理每条审计日志查询数据
        Console.WriteLine($"查询ID: {query.Id}, 名称: {query.DisplayName}");
    }
}

3. 关键注意事项

  • 权限匹配:确保使用的令牌权限与Graph Explorer一致,需包含AuditLog.Read.All或对应的Purview审计日志权限。
  • beta版本明确:请求URL必须使用https://graph.microsoft.com/beta前缀,避免SDK默认使用v1.0版本导致端点不存在。
  • 字段完整性:根据Graph Explorer返回的实际JSON结构,补充自定义实体类的属性,保证序列化解析正确。

内容的提问来源于stack exchange,提问作者John Park

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 16:04:51