2010-06-11 3 views
0

у меня есть веб-службы с последующим контракт операции и моя служба размещена на http://localhost:9002/Service.svc/У меня есть вопрос о шаблонах URI в WCF Services

[OperationContract] 
[WebGet(UriTemplate = "/Files/{Filepath}")] 
Stream DownloadFile(string Filepath); 

Этот веб-сервис позволит пользователям загружать файл, если надлежащее filepath является (предполагая, что я как-то узнаю, что правильный путь к файлу).

Теперь я могу воспользоваться этой услугой в браузере, набрав, http://localhost:9002/Service.svc/Files/(Filepath}

Если {filepath} некоторая простая строка, ее не проблема, но я хочу, чтобы отправить местоположение файла. Позволяет нам сказать, что пользователи хотят скачать файл C:\Test.mp3 на сервер. Но как я могу пройти C:\Test.mp3 как {Filepath}? Я получаю сообщение об ошибке при вводе http://localhost:9002/Service.svc/Files/C:\Test.mp3 в браузере.

Я новичок в веб-сервисах и считаю, что это сообщество - самый быстрый способ получить ответы на мои вопросы.

Теперь он работает. необходимо использовать HttpServerUtility.UrlTokenDecode() из System.web

+0

Справочный System.Web, а затем вызывается 'HttpUtility.UrlEncode()' в вашем пути к файлу - это превращает : и \ в URL-коды, которые должны быть точными на URL-адресе –

+0

Он все еще не работает, он кодирует ':' и '\', но не кодирует '.'. Есть идеи? – Debby

ответ

2

Вы не можете вводить специальные символы, такие как «:» и «\» как часть URL-адреса. Они должны быть закодированы в URL.

2

Похоже, вам нужно URL-кодировать строку, а затем декодировать ее на задней панели. Добавьте System.Web в свой проект и используйте System.Web.HttpUtility .UrlEncode(), затем System.Web.HttpUtility.UrlDecode()

Смежные вопросы