Graph API $filter传入含单引号等特殊字符的搜索值报错如何解决
问题原因
Graph API 遵循 OData 协议的查询语法规则,$filter 中字符串字面量内的单引号需要转义为两个连续的单引号,否则会触发语法解析异常。
修复方案
对搜索参数中的单引号提前做转义处理后再拼接查询条件,修改后的代码如下:
var graphClient = await GetGraphClient(); List<QueryOption> queryOptions = new List<QueryOption>(); // 转义搜索值中的单引号,符合OData字符串语法要求 string escapedSearch = search.Replace("'", "''"); queryOptions.Add(new QueryOption("$filter", string.Format("startswith(displayName,'{0}')", escapedSearch))); var collection = await graphClient.Data.Request(queryOptions).GetAsync();
补充说明
- 上述转义方式可直接解决单引号场景的报错,Microsoft Graph 官方SDK会自动对查询参数做URL编码,不需要额外处理其他URL特殊字符
- 如果查询逻辑复杂度较高,也可以选择用SDK支持的LINQ表达式生成
$filter条件,避免手动拼接字符串引发的语法问题
内容的提问来源于stack exchange,提问作者manish raghu
相关产品推荐
相关产品推荐

