2011-06-22 83 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

相關問題