Windows Mobileでコンパクトフレームワーク/ C#を使用しています。私のアプリケーションでUri.EscapeDataString() - 無効なURI:Uri文字列が長すぎます
私は、オブジェクトをシリアル化して情報を送信するための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を見ることができるように、コンパクトなフレームワークでは使用できません。
あなたはあなた自身の実装だと書くことができますか? 'EscapeDataString()'はほとんど納得がいくようです...エスケープする必要がある文字のライブラリに基づいて、通常の 'String.Replace'を行いますか? – Smudge202
Msdnの状態:UriFormatException - stringToEscapeの長さが32766文字を超えています。 – fluent
Smudge202が示唆したように、私は自分の実装を書いただけです。 – ETFairfax