如何编码提供NancyFX路径的URL

时间:2013-10-07 20:45:12

标签: c# urlencode nancy

我有一个包含以下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时,我的通话中的断点已到达。所以这似乎是反斜杠编码的一个问题。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

为了节省您的悬念,最终评论:

  

这是不可解决的..所有平台上的所有框架都受此影响

另一句话:

  

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

反斜杠(%5c)出现相同的事情。

可能的解决方法:

  • 使用查询字符串
  • 替换%!在URL中,然后再次返回服务器(yuk)
  • ...?