2016-09-17 67 views
1

我知道解決方案就像我想在ASP.NET Boilerplate。在此框架中,您可以聲明類,從自定義類繼承(不從ApiController繼承),並在運行時構建控制器並像控制器​​一樣工作。但我從頭開始編寫我的應用程序,實際上我不知道它是如何在Boilerplate中工作的(我認爲它使用重構,我找到了ControllerBuilder類,但它是如此龐大的庫,我認爲這不是個好主意重寫相同的代碼或複製過去,有太多的依賴關係)。有沒有辦法使用類而不從ApiController繼承,用作api控制器?

我知道我可以處理請求和我的自定義類方法的響應,但我認爲它會工作一點點慢,不安全。

也許你知道一個簡單的方法來做到這一點?謝謝。

回答

2

你在問什麼在技術上是可行的,但決不是簡單的。事實上,如果你對此不以爲然,我會建議你根本不想使用Web-Api框架。

但是,爲了解決可能的問題,我首先考慮利用HttpRoutingDispatcher作爲擴展點。包含調度程序的管道的概述可以在這裏找到:http://byterot.blogspot.com/2012/05/aspnet-web-api-series-messagehandler.html

一旦你想出正確的位置來擴展web api管道,你仍然需要創建組件以便以某種方式「知道」如何調用你的非控制器 - 你將失去大部分的框架所提供的(動作分辨率,參數綁定,動作過濾器等​​)

0

使用控制器來呈現您的正常視圖。 ApiController操作僅返回序列化併發送到客戶端的數據。

這裏是link

報價:

注意:如果你已經在ASP.NET MVC的工作,那麼你已經 熟悉控制器。它們在Web API中的工作方式類似,但Web API中的 控制器派生自ApiController類而不是 控制器類。您將注意到的第一個主要區別是對Web API控制器的 操作不返回視圖,它們會返回數據。

+0

謝謝,但這不是我的意思。我不想從任何類型的控制器(ApiController或ControllerBase)繼承。我想免費使用ASP平臺類作爲控制器。 –

0

您需要從ApiController繼承,因爲它具有內置的請求/響應管道/循環。

相關問題