如何为多个终结点共享相同的地址
本文关键字:共享 地址 结点 | 更新日期: 2023-09-27 18:34:13
我用WCF创建了REST服务,我有不同的合约(合约1,合约2等(。这是web.config
中的配置
<endpoint address="users" binding="webHttpBinding" behaviorConfiguration="web" contract="FilmInfoApi.Service.IUserService"/>
<endpoint address="actors" binding="webHttpBinding" behaviorConfiguration="web" contract="FilmInfoApi.Service.IActorService"/>
<endpoint address="films" binding="webHttpBinding" behaviorConfiguration="web" contract="FilmInfoApi.Service.IFilmService"/>
这是合同的例子。
[OperationContract]
[WebGet(UriTemplate = "?offset={offset}&count={count}", ResponseFormat = WebMessageFormat.Json)]
Films GetFilms(string offset, string count);
所以我的问题是如何对所有端点(本地主机/rest(使用相同的地址。因为我需要更灵活的合约 UriTemplate,例如,如果我需要按类别返回电影列表(uri 示例:localhost/rest/category/2(。但是有了这个 uri 和当前配置(web.config 中的地址属性(,我必须将此方法放入类别合约中。但在我看来,这种甲基一定在电影合同中。那么它有解决方案还是正常?
如果要公开具有单个终结点的多个协定,则必须让其中一个协定从另一个协定继承。然后让终结点公开派生协定。 如下所示:
[ServiceContract]
IFilmService : IActorService
然后有一个端点:
<endpoint address="rest" binding="webHttpBinding" behaviorConfiguration="web" contract="FilmInfoApi.Service.IFilmService"/>