使用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
相关产品推荐
相关产品推荐

