WCF REST(和WCF WebApi)如何将Uri映射到正确的服务端点?
在WCF WebApi预览4的上下文中: 在自定义委托通道中,我想根据传入的HttpRequestMessage.RequestUri找到关联的路由前缀或服务类型。
例如,
RouteTable.Routes.MapServiceRoute<ManagersResource>("employees/managers", config);
RouteTable.Routes.MapServiceRoute<EmployeesResource>("employees", config);
说出http://server/employees/John
的请求到ResourceFactoryProvider
实例化时,它已经知道具体的服务类型。我似乎无法追踪Uri和路由表路由之间的解决方案。
提前非常感谢。
答案 0 :(得分:6)
通过使用MapServiceRoute<TService>
,代码实际上是在ASP.NET路由表中注册ServiceHostFactory
。首先,请求到达ASP.NET,并将其定向到服务EmployeesResource(这是URL可以映射到的唯一路由)。此时,WCF Web API服务主机(HttpConfigurableServiceHost
)将使用UriTemplateTable
将请求分派给适当的操作:如果您有类似下面的代码,那就是将要调用的操作:
[WebGet(UriTemplate = "/{employeeName}")]
public Employee Get(string employeeName);