Благодаря автономной поддержке мобильных служб Azure я выполняю запрос PullAsync следующим образом:
// This list contains 53 emails
var deviceContactEmails = new List<string> { "[email protected]", "[email protected]", ... };
var query = _userTable.Where(x => deviceContactEmails.Contains(x.Email));
await _userTable.PullAsync(query);
Mobile Services 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
Проблема в том, что если deviceContactEmails слишком длинный, служба будет жаловаться на длину строки запроса. Попытка отфильтровать такое количество элементов в URL-адресе является проблемой, поэтому мне нужно отфильтровать, передав элементы в теле запроса с помощью JSON или каким-либо другим способом.
Итак, я предполагаю, что вопрос заключается в следующем: как мне правильно настроить это с помощью Mobile Service SDK с автономной поддержкой, чтобы я мог избежать превышения ограничения на длину строки запроса в запросе с кодировкой URL?
in
в этом контексте довольно велик. Можете ли вы уточнить, сколько элементов находится вdeviceContractEmails
при сбое? - person Kirk Woll   schedule 02.12.2014deviceContactEmails
, по-видимому, создан на стороне сервера, и в этом случае эта ошибка будет отвлекающим маневром. - person Kirk Woll   schedule 02.12.2014