meu*_*eum 5 microsoft-graph-sdks microsoft-graph-api
我正在尝试根据我已经有值的二进制扩展属性从 grapi api 检索事件。我已从同一 api 检索到该值,因此我知道存在具有该值的事件。我还知道属性 id 是正确的,因为我将其与 .Expand() 一起使用来获取值。
var value = "BAAAAIIA4AB0xbcQGoLgCAAAAAAwMvfBFvzUAQAAAAAAAAAAEAAAAEZ53uCfQ51AhtRf+FNQjOk=";
var cleanGlobalObjectIdPropertyId = "Binary {6ed8da90-450b-101b-98da-00aa003f1305} Id 0x23";
var events = await client.Users["myuser@example.com"].Events.Request()
.Filter($"singleValueExtendedProperties/Any(ep: ep/id eq '{cleanGlobalObjectIdPropertyId}' and ep/value eq '{value}')")
.GetAsync();
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
Microsoft.Graph.ServiceException:代码:ErrorInvalidUrlQueryFilter
消息:$filter 的过滤器表达式与单个扩展属性和值限制不匹配。
我使用了与字符串类型的扩展属性相同的过滤器语法,并且效果很好,所以我认为这是一个二进制属性这一事实与问题相关。
我也面临这个问题。但我尝试根据 mapi 属性 SearchKey 搜索 /messages。我想使用类似的东西:
https://graph.microsoft.com/v1.0/me/messages?$filter=singleValueExtendedProperties%2FAny(ep%3A%20ep%2Fid%20eq%20'Binary%200x300B'%20and%20ep%2Fvalue%20eq%20'yxum+DwfxUy13C4qs5R6ig==')
Run Code Online (Sandbox Code Playgroud)
“这六个比较运算符可用于除 Edm.Binary、Edm.Stream 和 Edm.Geo 类型之外的所有原始值。”
所以我认为应该以某种方式从 base64 转换或解码二进制文件,否则根本不可能。
更新:所以我终于弄清楚了。假设我得到的 singleValueExtendedProperty 的值为:
{
"id": "Binary 0x300b",
"value": "yxum+DwfxUy13C4qs5R6ig=="
}
Run Code Online (Sandbox Code Playgroud)
我想通过该属性的值查找消息。这里的问题是“+”如果存在的话应该被编码。值也应该转换为 Edm.Binary。正确的查询如下所示:
https://graph.microsoft.com/v1.0/me/messages?$filter=singleValueExtendedProperties%2FAny(ep%3A%20ep%2Fid%20eq%20'Binary%200x300B'%20and%20cast(%20ep%2Fvalue,Edm.Binary)%20eq%20binary'yxum%2BDwfxUy13C4qs5R6ig==')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
634 次 |
| 最近记录: |