私は暗号化したい辞書オブジェクトを持っていて、それをクエリ文字列に入れて、反対側で解読します。暗号化されたクエリ文字列を使用して辞書を渡す
私はこれにJavaScriptSerializerを使用しています。今私は同じページのonloadでこれを試して、それが働いた。したがって、使用している暗号化/復号化拡張メソッドが機能しています。これは私にクエリーストーンで起こっている問題があると信じさせます。
上記の例で
var js = new JavaScriptSerializer();
var d = new Dictionary<string, string>();
d.Add("ID", "123456");
d.Add("Name", "HELLO TEST");
d.Add("Email", "[email protected]");
var s = js.Serialize(d).EncryptString();
var ds = js.Deserialize<Dictionary<string, string>>(s.DecryptString());
@ViewBag.Test = ds["Name"];
、EncryptString()
とDecryptString()
は、私が使用している拡張メソッドです。これは意図したとおりに動作するため、"Name"
の正しい値が引き出されます。
シリアライズされた暗号化された文字列をクエリ文字列に入れて試してみると、問題が発生します。
var js = new JavaScriptSerializer();
var d = new Dictionary<string, string>();
d.Add("ID", "123456");
d.Add("Name", "HELLO TEST");
d.Add("Email", "[email protected]");
var s = HttpUtility.UrlEncode(js.Serialize(d).EncryptString());
s
その後、クエリ文字列として使用されます。
だから最初のページに、私はこのような何かを持っています。受信ページで
、私はこれを持っている:
public ActionResult Display(string r)
{
var js = new JavaScriptSerializer();
var decryptedString = HttpUtility.UrlDecode(r).DecryptString();
var s = js.Deserialize<Dictionary<string, string>>(decryptedString);
return View();
}
これは、エラーがスローされます。decryptstringライン上このエラーを。私は何が起こっているのかを取得しない
それは、クエリ文字列に入る前に...私はそれが逆シリアル化される前、それをurldecoding、テキストをURLエンコードしています。..
EDIT
はそれを考え出しました..私は2回それを暗号化していました...
違いはありませんでした。それでも同じエラー。 – jzm
@rudeovskizebear:この 's'値からURLがどのように生成されているかを教えてください。 – StriplingWarrior
私は他に何を使うべきか分からなかったので、私は辞書を試しました。しかし、私はそれが動作するようになった後、私はエラーが辞書シリアル化がサポートされていないと言っている。私は今それを代わりにリストに変換しました。何がお勧めですか? – jzm