ASP.NET Base64字符串损坏

时间:2009-04-20 14:04:20

标签: asp.net httpwebrequest asp.net-3.5

我将一个对象从一个asp.net页面传递给另一个。我将对象编码为Base64字符串并将其作为POST参数传递。但是,当接收页面读取POST值时,如果Base64字符串中有+号,则它将被换行替换。例如:

 ...AABDEDS+DFEAED...

变为

 ...AABDEDS
 DFEAED...

我在发送页面中编码后立即将Base64字符串与接收页面中解码之前的字符串进行了比较,这是唯一的区别。我在将base64字符串写入请求流之前尝试了HtmlEncoding(),但这没有任何效果,所以它似乎是接收端的一个问题。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

使用UrlEncode。 +是保留字符,需要进行编码。

答案 1 :(得分:1)

当您在参数中传递base64字符串时,您需要对其进行URL编码(以便正确地填充字符)。使用:

System.Web.HttpServerUtility.UrlEncode(base64String);

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

答案 2 :(得分:0)

+符号是一个特殊的URL字符,它自己就会评估到URL中的空格。

你需要在一侧Server.URLEncode你的base64字符串(这会将Plus变为%2B而另一端变为Server.URLDecode