Uri.EscapeDataString () - Недействительный URI: строка URI слишком длинная

Я использую компактную платформу / C # на Windows Mobile.

В моем приложении я загружаю данные на сервер, сериализуя объекты и используя запрос 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 (имеющая собственные методы кодирования / декодирования) недоступна для компактных фреймворк.

29
задан abatishchev 13 February 2012 в 09:25
поделиться