2013-10-07 30 views
4

路徑的網址我有以下GET API模塊:如何編碼提供給NancyFX

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

我嘗試使用WebClient.DownloadData下列要求:

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

我可以看到它被編碼爲filesignature/mydirectory%5cmyfile.exe,所以看起來沒錯。

但是,我得到了返回404.我試圖在瀏覽器中做到這一點,它是一樣的。當我刪除%5c時,我的呼叫斷點已經達到。所以這似乎是反斜線編碼的問題。

有什麼建議嗎?

回答

1

所以我沒有找到我的問題的確切解決方案。但是相反,我使用WebClient的Query屬性並在那裏正確設置名稱/值。那麼不需要編碼。

1

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

爲了節省您的懸念,最後的評論:

這是unsolveable ..所有的框架,從這個遭受所有平臺上的

另一句名言:

對「foo/bar%2fbaz」的請求將解析爲「foo/{bar}/baz」 , 儘管「/」已被編碼(因此不應該被 視爲路徑分隔符)。

反斜槓(%5c)出現相同的情況。

可能的解決方法:

  • 使用的查詢字符串,而不是
  • 替換爲%!在URL中,然後再回到服務器上(yuk)
  • ...?
相關問題