我在使用紧凑框架/ C#在Windows Mobile上。
在我的应用程序中,我通过序列化对象并使用HttpWebRequest / POST请求将信息发送到服务器来上传数据。 在服务器上,发布数据被反序列化并保存到数据库中。
前几天,我意识到发布数据中存在特殊字符(和等等)。 因此,我将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(它有自己的编码/解码方法)。
EscapeDataString()
似乎主要是为了方便...基于需要转义的字符库来执行普通的String.Replace
? - Smudge202