Я использую compact framework/С# на мобильных устройствах Windows.
В моем приложении я загружаю данные на сервер путем сериализации объектов и использования запроса HttpWebRequest/POST для отправки информации. На сервере почтовые данные де-сериализуются и сохраняются в db.
На днях я понял, что у меня возникла проблема со специальными символами в данных сообщения (амперсанды и т.д.). Поэтому я ввел Uri.EscapeDataString() в метод, и все было хорошо.
Однако сегодня я обнаружил, что есть проблема, когда приложение пытается загрузить большой объем данных (я не уверен, что именно означает "большой" на данный момент!)
Существующий код (вид)
var uploadData = new List<Things>();
uploadData.Add(new Thing() { Name = "Test 01" });
uploadData.Add(new Thing() { Name = "Test 02" });
uploadData.Add(new Thing() { Name = "Test with an & Ampersand " }); // Do this a lot!!
var postData = "uploadData=" + Uri.EscapeDataString(JsonConvert.SerializeObject(uploadData, new IsoDateTimeConverter()));
Проблема
Вызов Uri.EscapeDataString() вызывает следующее исключение:
System.UriFormatException: недопустимый URI: строка Uri слишком длинная.
Вопрос
Есть ли другие способы подготовки данных для загрузки?
Насколько я понимаю, HttpUtility (которая имеет собственные методы кодирования/декодирования) недоступна для компактной структуры.