2011-01-05 12 views
0

.Net 3.5でWebサイトを作成しています。文字列をBase64Stringに変換してクエリ文字列を送信しています。 Response.Redirectは小さな文字列に対してうまく機能します。しかし、元の文字列サイズが1670の場合、response.redirectはエラー "ページを見つけることができません"となります。aASP.NetでBase64でエンコードされたクエリ文字列を送信する問題

itemは、以下のコードスニペットの文字列です。

byte [] data = Encoding.Default.GetBytes(item); 返信Convert.ToBase64String(data)

これを解決するにはどうすればよいですか?

答えて

2

長い値にはクエリ文字列を使用しないでください。ブラウザとWebサーバーによって最大安全長さが決まりますが、2000文字を超えると安全ではありません。これを解決するには、代わりにPOSTリクエストを使用するか、またはサーバーにデータを保存し、クエリ文字列にキーを渡します。

+0

私にお聞かせください。ファイルをクライアントに渡すために.ashxファイルを使用しています。このハンドラを呼び出すと、セッションとデータベースの値を使ってこのクライアントがファイルを所有していることを確認します。クライアントは、クエリ文字列(データベース項目ID)が暗号化されていると主張していますが、短く暗号化された値が空白に変換されるプラス記号などの文字になることがあるという問題があります。お知らせ下さい。 –

0

クエリ文字列として送信された文字には制限があります - それは、ブラウザからブラウザに異なります

http://support.microsoft.com/kb/q208427/

私はDBに保存し、キーをもう一方の端にそれを取得したいです。

+0

こんにちは、ソリューションをありがとう。私は、以前のサイトを移行しているので、クエリー・ストリングのデータをセッションに保存したかったのですが、同じアプローチで作業することを考えました。しかし、既存のサイトで何かが正しく機能しています。 – Sunil

+0

実際にはクエリ文字列のデータの機密性によって決まります。通常のViewStateページデータの場合、それをSessionに保存して、宛先ページのinitメソッドで取得できますか?あるいは、クロスページ投稿を見ることもできます。http://msdn.microsoft.com/en-us/library/ms178139%28VS.90%29.aspx – IrishChieftain

関連する問題