Является ли "/ literal / {param} / literal" допустимым шаблоном URL для службы отдыха WCF? - PullRequest
1 голос
/ 15 апреля 2020

Я пытаюсь добавить новую конечную точку в службу REST на основе WCF со следующим шаблоном URL:

/books/{bookId}/pdf

, но выдается сообщение об ошибке:

UriTemplate '/books/*/pdf' недействительно; подстановочный знак ('*') не может появляться в имени переменной или литерале, кроме как в качестве конструкции для сегмента подстановочного знака. Обратите внимание, что подстановочный сегмент, литерал или переменная, действителен только как последний сегмент пути в шаблоне; подстановочный знак может появляться только один раз. См. Документацию для UriTemplate для получения более подробной информации. '

Вот контракт на обслуживание:

[OperationContract]
[WebInvoke(UriTemplate = "/books/{bookId}/pdf", Method = "POST")]
Message GetBookPDF(string bookId);

Является ли это ограничение, что переменная действительна только в качестве последней части URL ? Я не смог найти ссылку, подтверждающую это.

1 Ответ

1 голос
/ 17 апреля 2020

Я уверен, что переменную не нужно настраивать в последней части URL.
Мой сервисный контракт

   public interface ITestService
    {
        [OperationContract]
        [WebInvoke(Method ="POST",UriTemplate ="/books/{id}/pdf")]
        string Test(string id);
    }

Результат.
enter image description here
Пожалуйста, посмотрите на эту ссылку.
{ ссылка }
Наиболее вероятный сценарий - то, что UriTemplate может соответствовать нескольким OperationContract, таким образом, произошла ошибка.
Не стесняйтесь дайте мне знать, если проблема все еще существует.

...