получить файл API вызова с хэш-тегом # в строке не работает?C # - PullRequest
0 голосов
/ 01 октября 2018

У меня есть строка

 http://localhost:1114/api/Upload/GetFile?uploadFile=/Uploads/SupportingDocuments/ca2432cc-a9a3-4b98-b27a-7fadf9bb524bNC%20#1%20-%20MAIL%20TO%20ACCREDITATION%20BODY%20DAC.pdf

В имени файла есть хеш-тег charecter '#', который я обнаружил после отладки, контроллер получает

  /Uploads/SupportingDocuments/ca2432cc-a9a3-4b98-b27a-7fadf9bb524bNC

в качестве имени файла, но если я удаляюзатем он получает правильное имя файла. У меня есть много документов с этим именем файла

  ca2432cc-a9a3-4b98-b27a-7fadf9bb524bNC #1 - MAIL.pdf

Итак, как сделать вызов API работает с этим персонажем также в C #

   [HttpGet]
    [Route("GetFile")]
    public IHttpActionResult GetFile(string uploadFile)
    {

       //without # works only need solution
   }

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Вы можете заменить пробелы до и после # на -.например, ca2432cc-a9a3-4b98-b27a-7fadf9bb524bNC-#-MAIL-TO-ACCREDITATION-BODY-DAC.pdf

0 голосов
/ 01 октября 2018

Да, это потому, что в URI # является началом идентификатора фрагмента .Это не часть пути.Если вам нужно это как часть пути (или параметра запроса), вам нужно экранировать его как %23, точно так же, как вы уже выходите из пробела как %20.

С RFC 3986 :

Как таковой, идентификатор фрагмента не используется в специфичной для схемы обработке URI;вместо этого идентификатор фрагмента отделяется от остальной части URI до разыменования, и, таким образом, идентифицирующая информация в самом фрагменте разыменовывается исключительно пользовательским агентом, независимо от схемы URI.

Другими словами, когда вы отправляете запрос на URI с идентификатором фрагмента, идентификатор фрагмента удаляется и вместо этого обрабатывается браузером (или любым другим компонентом, отправляющим запрос).Поэтому, если вы попытаетесь использовать его как часть обычного пути, это большая проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...