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

https://github.com/NancyFx/Nancy/issues/1280を参照してください。

サスペンスを救うために、最後のコメント:

これは解決できません..すべてのフレームワークがすべてのプラットフォームでこれに悩まされています

別の引用:

「foo/bar%2fbaz」へのリクエストは、「/」がエンコードされているにもかかわらず、ルート「foo/{bar}/baz」に解決されます (したがって、パス区切りとして扱われるべきではありません)。

バックスラッシュ (%5c) でも同じことが起こるようです。

考えられる回避策:

  • 代わりにクエリ文字列を使用してください
  • と置換する !URLで、次にサーバーに戻ります(yuk)
  • ...?
于 2016-08-25T13:31:47.100 に答える