如何传递包含.NET中带有`+`和`//`字符的值的包罗万象(*)url参数

时间:2018-11-02 15:57:36

标签: .net .net-core asp.net-web-api-routing

我的问题与ASP.NET Catch all routing and escaping forward slashes非常相似,但是五年来都没有得到回答。

当包含多个catch-all/字符(编码)时,我无法在ASP.NET Core中“重构”我的+ URL段。

当我使用这样的路由创建API控制器时:

[Route("path/{*catchAll}")]
public string Path(string catchAll = null) {
    return catchAll;
}

首先,.NET Core拒绝这样的URL:/path/double%2F%2Fslash%2Bplus,因为两次转义,为此我将以下内容添加到web.config。

<requestFiltering allowDoubleEscaping="true" />

但是,为这样的URL返回的值:/path/double%2F%2Fslash%2Bplus输出如下:

  

双/斜杠加号

实际上,无论URL中有多少%2F实例,它们都将合并为一个/

现在,当我实际上双重转义double%252F%252Fslash%252Bcomment这样的值时,它会单一解析 /个字符,同时双重解析 +个字符...输出:

  

double%2F%2Fslash + comment

但是我不能再解码一次,因为这样会产生:

  

双//斜杠注释

缺少+个字符...

ASP.NET Core中的控制器中是否有一种方法来获取/重构包含//和我的+字符的值?

0 个答案:

没有答案