是"/literal/{param}/literal";WCF restful服务的有效url模板

是"/literal/{param}/literal";WCF restful服务的有效url模板,rest,web-services,wcf,url-template,Rest,Web Services,Wcf,Url Template,我正在尝试使用以下URL模板向基于WCF的REST服务添加新端点: /books/{bookId}/pdf 但它给出了一个错误的说法: UriTemplate“/books/*/pdf”无效;通配符(“*”)不能出现在变量名或文字中,除非作为通配符段的构造。请注意,通配符段(文字或变量)仅作为模板中的最后一个路径段有效;通配符只能出现一次。有关详细信息,请参阅UriTemplate的文档。” 这是服务合同: [OperationContract] [WebInvoke(UriTemplate

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

/books/{bookId}/pdf
但它给出了一个错误的说法:

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

这是服务合同:

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

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

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

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

请查看此链接。

最可能的情况是UriTemplate可以匹配多个OperationContract,因此发生了错误。

如果问题仍然存在,请随时通知我。

您可以添加您的服务接口和rest配置吗?谢谢。我的代码为CORS配置自己的自定义主机并用通配符字符替换变量时出现问题