2011-06-22 67 views
2

WCF REST(和WCF WebApi)如何将Uri映射到正确的服务端点?WCF WebApi如何将请求URI映射到相应的服务类型/操作?

在WCF WebApi Preview 4的环境中: 在自定义委托通道中,我希望根据传入的HttpRequestMessage.RequestUri找到关联的路由前缀或服务类型。

因此,举例来说,

RouteTable.Routes.MapServiceRoute<ManagersResource>("employees/managers", config); 
RouteTable.Routes.MapServiceRoute<EmployeesResource>("employees", config); 

说一个请求进入http://server/employees/John

  1. 如何WCF这映射到正确的终点?

ResourceFactoryProvider已被实例化时,它已经知道具体的服务类型。我似乎无法追踪Uri和路由表路由之间的解决方案。

非常感谢提前。

回答

6

通过使用MapServiceRoute<TService>,代码实际上在ASP.NET路由表中注册了一个ServiceHostFactory。所以首先,请求到达ASP.NET,并将其引导到服务EmployeesResource(这是URL可映射到的唯一路由)。在这一点上,WCF的Web API服务主机(HttpConfigurableServiceHost)将使用UriTemplateTable来请求分派到相应的操作:如果您有类似下面的代码,这将被称为操作:

[WebGet(UriTemplate = "/{employeeName}")] 
public Employee Get(string employeeName); 
+0

我真的很感谢你的回应。我不能相信有关内部到WCF服务路由的信息很少。虽然我主要感兴趣的是映射代码在哪里存在,它决定了基于请求URI的服务类型? ASP.NET或WCF如何确定EmployeesResource是实例化的正确路由/服务? “ - ”指向它的服务EmployeesResource(这是唯一的路径可以映射到URL)“ 我似乎无法跟踪调用堆栈,并找出这一点。再次感谢! – Daniel

相关问题