2016-09-17 66 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继承,因为它具有内置的请求/响应管道/循环。

相关问题