2012-09-06 98 views
1

在ASP.Net Web API中執行「基於內容的路由」的可能方式是什麼?它是否提供WCF提供的開箱即用功能(WCF Content based routingASP.Net Web API:基於內容的路由

+0

我還沒有看到任何會允許這種情況發生。 WebApi的配置方式不會真正「檢查」您發送的有效負載(因爲您無法多次讀入入站流)。爲什麼你不能在控制器本身有一個策略或一些東西來處理它?似乎很奇怪必須根據發送的有效負載來掃描多個端點。 – Chris

+0

我認爲這將是一個很好的功能,路由將基於客戶端提供的Content-Type頭的內容(類似於已經基於http動詞完成路由(這只是另一個http頭)。 @Chris的一個附註 - 很容易多次讀取相同的有效載荷,這只是一個流。你只需要記得當你完成時做一個request.InputStream.Seek(0,SeekOrigin.Begin)。 – gardarh

回答

0

只需重寫ApiControllerActionSelector類中的SelectAction方法,您可以在其中檢查請求的內容並確定要使用哪個操作方法(使用反射)。然後,只需返回傳入當前控制器上下文中的ReflectedHttpActionDescriptor實例和反射操作方法的MethodInfo。如果找不到匹配的方法,只需調用base並返回該結果。

樣品可以在這裏找到:https://stackoverflow.com/a/16545954/1402786