“/literal/param/literal”是 WCF 宁静服务的有效 url 模板吗
Posted
技术标签:
【中文标题】“/literal/param/literal”是 WCF 宁静服务的有效 url 模板吗【英文标题】:Is "/literal/param/literal" a valid url template for a WCF restful service“/literal/param/literal”是 WCF 宁静服务的有效 url 模板吗 【发布时间】:2020-07-28 05:23:40 【问题描述】:我正在尝试使用以下 URL 模板将新端点添加到基于 WCF 的 REST 服务:
/books/bookId/pdf
但它给出了一个错误提示:
UriTemplate '
/books/*/pdf
' 无效;通配符 ('*') 不能出现在变量名或文字中,除非作为通配符段的构造。请注意,通配符段,无论是文字还是变量,仅作为模板中的最后一个路径段有效;通配符只能出现一次。有关更多详细信息,请参阅 UriTemplate 的文档。'
这是服务合同:
[OperationContract]
[WebInvoke(UriTemplate = "/books/bookId/pdf", Method = "POST")]
Message GetBookPDF(string bookId);
这是变量仅作为 url 的最后一部分有效的限制吗?我找不到任何可以证实这一点的链接。
【问题讨论】:
能否请您添加您的服务接口和其余配置? 【参考方案1】:我确信该变量不需要在 URL 的最后部分配置。 我的服务合同
public interface ITestService
[OperationContract]
[WebInvoke(Method ="POST",UriTemplate ="/books/id/pdf")]
string Test(string id);
结果。 请查看此链接。https://***.com/questions/13956889/in-wcf-can-i-have-a-wildcard-character-in-a-literal-segment-of-my-uritemplate 最可能的情况是 UriTemplate 可以匹配多个 OperationContract,从而发生错误。 如果问题仍然存在,请随时告诉我。
【讨论】:
谢谢。我的代码为 CORS 配置自己的自定义主机并用通配符替换变量时出现问题以上是关于“/literal/param/literal”是 WCF 宁静服务的有效 url 模板吗的主要内容,如果未能解决你的问题,请参考以下文章