查询字符串参数中的斜杠?

use*_*165 10 c# asp.net-mvc url-routing

如何将文件路径作为查询字符串参数发送?

这是我的字符串参数:

//domain/documents/Pdf/1234.pdf

我试过了:

    [HttpPost]
    [Route("documents/print/{filePath*}")]
    public string PrintDocuments([FromBody] string[] docs,string filePath)
    {
       .....
    }
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我想是因为参数开头的双斜线.

任何的想法?

Cro*_*der 10

如果像你说的那样,整个字符串是参数,而不是路由,则需要对其进行URL编码.无论如何你应该总是这样做:

System.Net.WebUtility.UrlEncode(<your string>);
// %2F%2Fdomain%2Fdocuments%2FPdf%2F1234.pdf
Run Code Online (Sandbox Code Playgroud)

更新

由于这不起作用,我建议您使用Base64编码而不是URL编码:

var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(<your string>);
var encodedFilePath = System.Convert.ToBase64String(plainTextBytes);
Run Code Online (Sandbox Code Playgroud)

..并在你的控制器解码它:

byte[] data = Convert.FromBase64String(filepath);
string decodedString = Encoding.UTF8.GetString(data);
Run Code Online (Sandbox Code Playgroud)