2011-06-22 3 views
2

WCF REST(およびWCF WebApi)は、Uriを正しいサービスエンドポイントにどのようにマッピングしますか?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

  1. のために来てどのようにWCFは、正しいエンドポイントにこれをマッピングするのか?と言いますか

ResourceFactoryProviderがインスタンス化されるまでには、すでに具体的なサービスタイプが分かっています。私は、Uriとルーティングテーブルルートの間で解決がどこで起こるかをトレースするように見えません。

事前に感謝します。

答えて

6

MapServiceRoute<TService>を使用すると、実際にコードがServiceHostFactoryをASP.NETルーティングテーブルに登録しています。まず、リクエストはASP.NETに到着し、リクエストはサービスEmployeesResource(URLをマップできる唯一のルート)に転送されます。その時点で、WCFのWeb APIサービスホスト(HttpConfigurableServiceHost)は、適切な操作に要求をディスパッチするためにUriTemplateTableを使用します。あなたは以下のコードのようなものを持っている場合、それが呼び出されます操作です:

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

I本当にあなたの反応に感謝します。私はWCFサービスのルーティングに内部に関する情報がほとんどないとは信じられません。私は主に、リクエストURIに基づいてサービスタイプを決定するマッピングコードがどこに存在するかに興味がありますか? EmployeesResourceがインスタンス化する正しいルート/サービスであるとASP.NETまたはWCFがどのように判断しますか? - サービスEmployeesResource(URLをマップできる唯一のルート)に転送します。 コールスタックをトレースして見つからないようです。再度、感謝します! – Daniel

関連する問題