WCF WebApi如何将请求URI映射到适当的服务类型/操作?

Dan*_*iel 2 wcf wcf-rest wcf-web-api

WCF REST(和WCF WebApi)如何将Uri映射到正确的服务端点?

在WCF WebApi预览4的上下文中:在自定义委托通道内,我想基于传入的HttpRequestMessage.RequestUri找到关联的路由前缀或服务类型.

所以,例如,

RouteTable.Routes.MapServiceRoute<ManagersResource>("employees/managers", config);
RouteTable.Routes.MapServiceRoute<EmployeesResource>("employees", config);
Run Code Online (Sandbox Code Playgroud)

假设有一个请求进入http:// server/employees/John

  1. WCF如何将其映射到正确的端点?

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

非常感谢提前.

car*_*ira 6

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

[WebGet(UriTemplate = "/{employeeName}")]
public Employee Get(string employeeName);
Run Code Online (Sandbox Code Playgroud)