2

WCF REST(和 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 和路由表路由之间的解析发生位置。

非常感谢提前。

4

1 回答 1

6

通过使用MapServiceRoute<TService>,代码实际上是ServiceHostFactory在 ASP.NET 路由表中注册一个。因此,首先,请求到达 ASP.NET,并将其定向到服务 EmployeesResource(这是 URL 可以映射到的唯一路由)。此时,WCF Web API 服务主机 ( HttpConfigurableServiceHost) 将使用 将UriTemplateTable请求分派给适当的操作:如果您有类似以下代码的内容,则将调用该操作:

[WebGet(UriTemplate = "/{employeeName}")]
public Employee Get(string employeeName);
于 2011-06-22T23:51:57.920 回答