使用Microsoft Graph API搜索含下划线的SharePoint网站时出错
问题原因
Microsoft Graph的$search参数基于KQL(关键字查询语言)实现,下划线在KQL中属于特殊语法字符,直接使用会被解析为通配符相关逻辑,从而触发语法错误。
解决方法
将包含下划线的搜索词用双引号包裹,标记为完整短语,API就会把下划线当作普通字符处理。修改后的代码如下:
var sites = await graph.Sites.GetAsync((config) => { config.QueryParameters.Select = new string[] { "name", "webUrl", "id" }; config.QueryParameters.Search = "\"My_Site\""; // 用双引号包裹带下划线的搜索词 });
补充说明
- 若需要模糊匹配名称中任意位置包含"My_Site"的站点,可在双引号前后添加通配符
*,例如"*My_Site*" - 除下划线外,KQL中的其他特殊字符(如
-、:、(、)等),也需要通过双引号包裹来避免语法错误
内容的提问来源于stack exchange,提问作者zmbq
相关产品推荐
相关产品推荐

