4

我有一个带有以下 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,我在调用中的断点到达。所以这似乎是反斜杠编码的问题。

有什么建议吗?

4

2 回答 2

1

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

于 2013-10-09T18:00:45.270 回答
1

https://github.com/NancyFx/Nancy/issues/1280

为了节省你的悬念,最后的评论:

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

另一个引用:

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

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

可能的解决方法:

  • 改用查询字符串
  • 用。。。来代替 !在 URL 中,然后再次返回服务器 (yuk)
  • ...?
于 2016-08-25T13:31:47.100 回答