我有一个包含以下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
时,我的通话中的断点已到达。所以这似乎是反斜杠编码的一个问题。
有什么建议吗?
答案 0 :(得分:1)
所以我找不到解决问题的确切方法。但我使用WebClient的Query属性并在那里正确设置名称/值。那么就不需要编码了。
答案 1 :(得分:1)
请参阅https://github.com/NancyFx/Nancy/issues/1280
为了节省您的悬念,最终评论:
这是不可解决的..所有平台上的所有框架都受此影响
另一句话:
对“foo / bar%2fbaz”的请求将解析路由“foo / {bar} / baz”, 尽管“/”已被编码(因此不应该 作为路径分隔符处理。)
反斜杠(%5c)出现相同的事情。
可能的解决方法: