2009-04-20 27 views
0

Ich bin ein Objekt von einer asp.net-Seite zu einem anderen übergeben. Ich kodiere das Objekt als Base64-String und übergebe es als POST-Parameter. Wenn die empfangende Seite jedoch den POST-Wert liest, wird in der Base64-Zeichenfolge ein + -Zeichen angezeigt und durch einen Zeilenumbruch ersetzt. Zum Beispiel:ASP.NET Base64 Zeichenfolge Korruption

...AABDEDS+DFEAED... 

wird

...AABDEDS 
DFEAED... 

I die Base64 Zeichenfolge unmittelbar nach der Codierung in der Sendeseite die Zeichenkette unmittelbar verglichen, bevor sie in der Empfangsseite decodiert, und das ist der einzige Unterschied. Ich habe versucht, HtmlEncoding() die Base64-Zeichenfolge vor dem Schreiben in den Request-Stream, aber das hatte keine Auswirkungen, so scheint es ein Problem auf der Empfängerseite sein.

Irgendwelche Ideen?

Antwort

2

Verwenden Sie UrlEncode. Das + ist ein reserviertes Zeichen und muss codiert werden.

+0

Yep drehen wird, dass es. Sie wissen nicht, warum das nicht tat für mich an erster Stelle auftreten. – NYSystemsAnalyst

1

Wenn Sie die base64-Zeichenfolge im Parameter übergeben, müssen Sie die URL codieren (damit die Zeichen richtig angezeigt werden). Verwendung:

System.Web.HttpServerUtility.UrlEncode(base64String); 

HttpServer.UrlEncode Method (String)(System.Web)

+0

+1 für die richtige Antwort, aber Rex kam zuerst. Danke. – NYSystemsAnalyst

0

das Symbol + ist eine spezielle URL Zeichen, das auf seine eigene auswertet zu einem Raum in der URL.

Sie benötigen Ihre Base64 Zeichenfolge auf der einen Seite Server.URLEncode (die mit dem Plus in ein% 2B und Server.URLDecode es auf der anderen Seite