如何对提供 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
时,到达调用中的断点。 所以这似乎是反斜杠编码的问题。
有什么建议吗?
所以我没有找到解决问题的确切方法。 但相反,我使用 WebClient 的查询属性并在那里正确设置名称/值。 然后不需要编码。
请参阅 https://github.com/NancyFx/Nancy/issues/1280
为了省去悬念,最后评论:
这是无法解决的..所有框架在所有平台上都遭受此影响
另一句话:
对"foo/bar%2fbaz"的请求将解析为路由"foo/{bar}/baz", 尽管"/"已被编码(因此不应 被视为路径分隔符)。
反斜杠 (%5c) 似乎也会发生同样的事情。
可能的解决方法:
- 改用查询字符串
- 在 URL 中将 % 替换为 !,然后在服务器上再次替换 (yuk)
- ...?