1

我正在尝试使用以下 URL 模板将新端点添加到基于 WCF 的 REST 服务:

/books/{bookId}/pdf

但它给出了一个错误说:

UriTemplate ' /books/*/pdf' 无效;通配符 ('*') 不能出现在变量名或文字中,除非作为通配符段的构造。请注意,通配符段(文字或变量)仅作为模板中的最后一个路径段有效;通配符只能出现一次。有关更多详细信息,请参阅 UriTemplate 的文档。

这是服务合同:

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

这是变量仅作为 url 的最后一部分有效的限制吗?我找不到任何可以证实这一点的链接。

4

1 回答 1

1

我确信该变量不需要在 URL 的最后部分配置。
我的服务合同

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

结果。 请查看此链接。https://stackoverflow.com/questions/13956889/in-wcf-can-i-have-a-wildcard-character-in-a-literal-segment-of-my-uritemplate 最可能的情况是 UriTemplate 可以匹配多个 OperationContract,从而发生错误。 如果问题仍然存在,请随时告诉我。
在此处输入图像描述



于 2020-04-17T08:00:15.560 回答