c# - 为什么 Request.QueryString ["path"] 将所有 + 号转换为空格?

标签 c# asp.net request query-string sign

我有这样的 JavaScript 代码:

function OnRequestComplete(result) {
        // Download the file
        //Tell browser to open file directly
        alert(result);
        var requestImage = "Handler.ashx?path=" + result;
        document.location = requestImage;
}

Handler.ashx 代码如下:

public void ProcessRequest(HttpContext context)
{
    Context = context;
    string filePath = context.Request.QueryString["path"];
    filePath = context.Server.MapPath(filePath);
}   

在 filePath 中,我们没有任何 + 号(而是空格)。
我该如何解决这个问题?
为什么 Request.QueryString["path"] 将所有 + 号转换为空格?

最佳答案

当您正确编码查询字符串时,空格将变为 +,而 + 将变为 %2B。解码过程正好相反,这就是为什么你的 + 变成了空格。

问题是你没有encode查询字符串,这意味着它的解码不正确。

var requestImage = "Handler.ashx?path=" + encodeURIComponent(result);

关于c# - 为什么 Request.QueryString ["path"] 将所有 + 号转换为空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7867603/

相关文章:

c# - TCP 服务器/客户端的自定义消息框架协议(protocol)

c# - 二进制搜索字符串数组未找到搜索的字符串 C#

c# - .NET中的 "international"英语文化是什么?

node.js - Node 错误 : getaddrinfo ENOTFOUND & EADDRINFO

javascript - 将表单数据转换为 AJAX 请求的请求数据

javascript - Chrome 扩展 : how can I intercept a cookie?

c# - 如何将自定义对象从异步操作过滤器传递到 ASP.net Core 中的 Controller ?

c# - 使用异步从数据库返回数据有什么好处?

javascript - 如何在部分回发中保留脚本 block ?

asp.net - 防止 ASP.NET 菜单出现在新行中