Передача сетевого пути в URL - PullRequest
2 голосов
/ 09 февраля 2010

Я создаю Службу WCF с методом

[OperationContract]
[WebGet(UriTemplate = "acl/f={fullFileName}")]
string GetACL(string fullFileName);

fullFileName - это полный путь к сетевому файлу или файлу на хосте.

Хост - это служба Windows с webHttpBinding и конфигурацией поведения. Я хочу вызвать это из браузера, используя что-то вроде

http://localhost/webservice/acl/f=[my network path here]

Я пытался ... / acl / f = file: // \ server \ share \ file.ext ... / ACL / е = файл: // C: \ file.ext

В браузере я получаю «Конечная точка не найдена».

Я знаю, что это работает, потому что я могу позвонить ... / acl / f = file.txt и получить правильный ответ от моей службы, указывающий, что файл не был найден. Так что метод вызывается правильно, когда я не использую косую черту в URI.

Любые мысли по этому поводу будут с благодарностью.

Спасибо, beezlerco на hotmail ...

Ответы [ 2 ]

0 голосов
/ 09 февраля 2010

Я считаю, HttpUtility.UrlEncode - это то, что вы ищете.
(Подробное описание см. В Использование HttpUtility.UrlEncode для кодирования ваших QueryStrings )

0 голосов
/ 09 февраля 2010

Вам также необходимо кодировать косую черту, двоеточия и технически точки.

  • \ должно быть% 5C
  • / должно быть% 2F
  • ,должно быть% 2E
  • : должно быть% 3A

для большинства других специальных символов см. http://www.asciitable.com/ и используйте «%» плюс шестнадцатеричный столбец в этой таблице.1015 *

...