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

使用C#修改AzureAD设备扩展属性时Graph API调用报错求助

解决Azure AD设备扩展属性修改的BadRequest错误

问题出在你传递extensionAttributes的方式上:你把它当成JSON字符串传入了,但Microsoft Graph SDK需要接收的是字典对象,而非序列化后的字符串。这就是为什么API Explorer里能运行,但C#代码报错——Explorer直接处理JSON对象,而SDK会自动负责序列化,传字符串会导致服务端解析时类型不匹配。

修正后的代码如下:

var device = await graphclient.Devices
    .Request()
    .Filter(ftr)
    .Select("Id")
    .GetAsync();

string objectId = device.CurrentPage.First().Id.ToString().Trim();

var extattr = new Device
{
    AdditionalData = new Dictionary<string, object>(){
        // 替换成字典对象,而非JSON字符串
        {"extensionAttributes", new Dictionary<string, object> { 
            {"extensionAttribute1", "BYOD-Device2"} 
        }}
    }
};

await graphclient.Devices[objectId]
     .Request()
     .UpdateAsync(extattr);

修改说明

  • 原来的"{\"extensionAttribute1\":\"BYOD-Device2\"}"是序列化后的JSON字符串,服务端期望接收的是一个对象结构,所以需要换成Dictionary<string, object>类型的对象。
  • SDK会自动将这个字典序列化为正确的JSON对象格式,匹配API的要求,从而避免Request_BadRequest错误。

运行这段代码后,就能成功将目标设备的extensionAttribute1值从BYOD-Device更新为BYOD-Device2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:50:27