移动服务:如何处理查询字符串过长的情况

本文关键字:字符串 查询 情况 处理 服务 何处理 移动 | 更新日期: 2023-09-27 18:32:48

借助 Azure 移动服务脱机支持,我发出如下所示的 PullAsync 查询:

// This list contains 53 emails
var deviceContactEmails = new List<string> { "derek@gmail.com", "sarah@gmail.com", ... };
var query = _userTable.Where(x => deviceContactEmails.Contains(x.Email));
await _userTable.PullAsync(query);

移动服务 SDK 使用这样的筛选器将查询转换为 URL 编码的 GET 请求(这是用于包含的 60 封电子邮件的列表,但为了简洁起见,我删掉了很多中间部分(:

https://rememberwhen.azure-mobile.net/tables/User?$filter=((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((email%20eq%20'carlin_jmecwrv_stulberg%40tfbnw.net')%20or%20(email%20eq%20'carlin_jmecwrv_stulberg%40tfbnw.net'))%20or%20(email%20eq%20'carlin_jmecwrv_stulberg%40tfbnw.net'))%20eq%20'carlin_jmecwrv_stulberg%40tfbnw.net'))%20or%20(email%20eq%20'carlin_jmecwrv_stulberg%40tfbnw.net'))&$skip=0&$top=50&__includeDeleted=true&__systemproperties=__createdAt%2C__version

问题是,如果 deviceContactEmail 太长,服务将抱怨查询字符串长度。尝试过滤 URL 中的这么多项目是一个问题,因此我需要通过使用 JSON 或其他方式传递请求正文中的项目来进行过滤。

所以我想问题是:如何使用具有离线支持的移动服务 SDK 正确设置它,以避免超出 URL 编码请求中查询字符串长度的限制?

移动服务:如何处理查询字符串过长的情况

看起来我需要创建一个自定义 API 来发送电子邮件列表作为请求的正文。我会更新这个答案,如果我解决它,我会接受。