0

我目前正在使用 WCF Web Api 开发的 Api 有问题,这就是问题:

我想将几个资源类注册为服务合同。所以我有一个 RootResource,我可以从中访问 ChildResource1、ChildResource2、ChildResourceN。

本质上,我想要做的是使用以下路由结构执行一系列 http 操作:

  1. GET / RootResource /{RootResouceId}/ ChildResourceN /{ChildResourceNId} (这将从RootResource中获取第N个ChildResource)

我当前的资源注册:

routes.MapServiceRoute<ChildResource1>("RootResource");

我的操作在资源中注释如下:

[WebGet(UriTemplate = "{RootResouceId}/ChildResource1/{ChildResource1Id}")]

然而这种方法对我来说并不方便,因为我所有的路线都需要有相同的模式,我上面提到的那个。

如果我现在想注册另一个资源,别说 ChildResource2,那么:

routes.MapServiceRoute<ChildResource2>("RootResource");

请注意,基本路由是相同的,而 WCF Web Api 不允许这样做。

4

1 回答 1

1

传递给 MapServiceRoute() 的“RootResource”必须映射到由 T 指定的单一类型。因此,如果您想使用您所描述的方案,则需要创建一个服务合同并将所有内容映射到该服务合同。从描述中我不确定 {RootResouceId} 是否映射到给定类型的特定项目,即所有类型都是相同的,在这种情况下,将它们放在一个合同或不同类型中是有意义的,在这种情况下,我会做这部分服务映射,即

routes.MapServiceRoute<ChildResource1>("RootResource/Child1");
routes.MapServiceRoute<ChildResource2>("RootResource/Child2");
于 2011-11-08T08:00:41.613 回答