如何对提供 NancyFX 路径的 URL 进行编码

本文关键字:URL 编码 路径 NancyFX | 更新日期: 2023-09-27 18:34:13

我有一个带有以下 GET API 的模块:

Get["/filesignature/{relativePath}"] = GetFileSignature;

我尝试将WebClient.DownloadData与以下内容一起使用:

var myPath = @"mydirectory'myfile.exe";
client.DownloadData("filesignature/" + HttpUtility.UrlEncode(myPath));

我可以看到它被编码为 filesignature/mydirectory%5cmyfile.exe ,所以看起来是正确的。

但是,我得到了返回 404。 我尝试在浏览器中执行此操作,结果相同。 当我删除%5c时,到达调用中的断点。 所以这似乎是反斜杠编码的问题。

有什么建议吗?

如何对提供 NancyFX 路径的 URL 进行编码

所以我没有找到解决问题的确切方法。 但相反,我使用 WebClient 的查询属性并在那里正确设置名称/值。 然后不需要编码。

请参阅 https://github.com/NancyFx/Nancy/issues/1280

为了省去悬念,最后评论:

这是无法解决的..所有框架在所有平台上都遭受此影响

另一句话:

对"foo/bar

%2fbaz"的请求将解析为路由"foo/{bar}/baz", 尽管"/"已被编码(因此不应 被视为路径分隔符)。

反斜杠 (%5c) 似乎也会发生同样的事情。

可能的解决方法:

  • 改用查询字符串
  • 在 URL 中将 % 替换为 !,然后在服务器上再次替换 (yuk)
  • ...?