2011-10-26 3 views
1

ファイルストアとして機能するRESTful WCFサービスがあります。任意の数のディレクトリとサブディレクトリが存在する可能性があるため、ユーザーにURLにファイルパスを渡すだけでアクセスできるようにしています。ユーザーがスラッシュをエンコードする必要なく、これを行う方法はありますか?エンコーディングなしのURIテンプレートでスラッシュ( '/')を使用する

例えば、Files/{path}のURIテンプレートは、http://localhost:8000/Files/folder1/subfolder2/subfolder3/file.jpgのようにアクセスできます。

+0

「スラッシュをエンコードするとどういう意味ですか?」あなたは、1)エンコードする必要がある場合にユーザーが書くべきこと、2)彼に書いてもらいたいこと、3)ユーザーの入力を読み取ることによって得たい結果についての例を挙げることができますか? – Otiel

+0

スラッシュをエンコーディングする必要があるのは、サービスがスラッシュをパラメータの一部ではなくURIの一部として解釈するためです。前者の場合、一致するURIテンプレートを見つけることができないため、404を返します。上記のURLの例は次のようになります:http:// localhost:8000/Files%2Ffolder1%2Fsubfolder2%2Fsubfolder3%2Ffile.jpg' – rafale

答えて

5

あなたのURIテンプレートの末尾に*を置くことができます。あなたの操作の中で*に合致する残りのuriをあなたのファイルパスとして解釈することができます。

+2

URIを 'Files/{path}'から 'Files/{* path}'に変更しました。ありがとう! – rafale

+0

+1、私のために働いた – Chris

0

これを達成するには、URL書き換えテクニックを使用する必要があります。 .net 4を使用する場合は、Routeテーブルを使用します。

0

私は恐怖を感じていません。次の作業はできますか?

  • ユーザーがpath変数にfolder1/subfolder2/subfolder3/file.jpgのようなものを入力してみましょう。
  • 実行します。String encodedPath = path.Replace("/", "%2F");
+0

これはうまくいくでしょう。スラッシュをエンコードするこれにより、よりクリーンなURLと若干簡単にアクセスできるようになります(ブラウザのアドレスバーに直接リンクする)。 – rafale

関連する問題