c# – QueryString在URLDecode之后格式错误

我试图通过QueryString将Base64字符串传递到C#.Net Web应用程序。当字符串到达​​时,“”(加号)正在替换为空格。看来,自动URLDecode进程正在执行此操作。我无法控制通过QueryString传递的内容。有没有办法处理这个服务器端?

例:

http://localhost:3399/Base64.aspx?VLTrap=VkxUcmFwIHNldCB0byAiRkRTQT8+PE0iIHBsdXMgb3IgbWludXMgNSBwZXJjZW50Lg==

生产:

VkxUcmFwIHNldCB0byAiRkRTQT8 PE0iIHBsdXMgb3IgbWludXMgNSBwZXJjZW50Lg==

人们建议对查询字符串进行URLE编码:

System.Web.HttpUtility.UrlEncode(yourString) 

我不能这样做,因为我无法控制调用例程(这对其他语言工作正常)。

还有一个用加号替换空格的建议:

Request.QueryString["VLTrap"].Replace(" ", "+");

我已经有了这个但是我的关注,我应该提到这个开始,是我不知道除了加号之外还有哪些其他角色可能会畸形。

我的主要目标是截取QueryString,然后再通过解码器运行。

为此,我尝试查看Request.QueryString.toString(),但是它包含相同的格式错误的信息。有没有什么方法来查看原始的QueryString之前,它是URLDecoded?

进一步测试后,似乎.Net希望从QuerString进入的所有内容都被URL编码,但浏览器不会自动对URL进行编码GET请求。

您可以手动替换值(argument.Replace(”,”))或查询HttpRequest.ServerVariables [“QUERY_STRING”](甚至更好的HttpRequest.Url.Query)并自行解析。

但是,您应该尝试解决提供URL的问题;加号需要在URL中编码为“+”,因为加号否则表示空格。

如果您不控制入站网址,则首选项可能是您避免使用最多的错误。

翻译自:https://stackoverflow.com/questions/123994/querystring-malformed-after-urldecode

转载注明原文:c# – QueryString在URLDecode之后格式错误