有没有办法使用类而不继承ApiController,用作api控制器?

时间:2016-09-17 14:04:27

标签: c# asp.net asp.net-web-api

我知道ASP.NET Boilerplate中我想要的解决方案。在这个框架中,你可以声明类,继承自定义类(不是从ApiController继承),当它运行时,它构建控制器并像控制器​​一样工作。

但是我从头开始编写我的应用程序,实际上我不知道它在Boilerplate中是如何工作的(我认为它使用重构,我找到了ControllerBuilder类,但它是如此大的库,我不会&#39 ;认为重写相同的代码或通过它复制它是个好主意,有很多依赖项)。

我知道我可以使用自定义类方法处理请求和响应,但我认为它会稍微缓慢而且不安全。

也许你知道一个简单的方法吗?谢谢。

3 个答案:

答案 0 :(得分:2)

你所要求的是技术上可行的,但绝不是简单的。事实上,如果你已经死定,我建议你可能根本不想使用Web-Api框架。

但是,为了解决可行的问题,我首先考虑利用HttpRoutingDispatcher作为扩展点。可以在此处找到包括调度程序在内的管道概述:http://byterot.blogspot.com/2012/05/aspnet-web-api-series-messagehandler.html

一旦你找到了扩展web api管道的正确位置,你仍然需要创建一些以某种方式“知道”的组件。如何调用你的非控制器 - 你将失去框架所提供的大部分内容(动作解析,参数绑定,动作过滤器等​​)。

答案 1 :(得分:0)

使用Controller渲染普通视图。 ApiController操作仅返回序列化并发送到客户端的数据。

这是link

引用:

  

注意如果您使用过ASP.NET MVC,那么您已经是   熟悉控制器。它们在Web API中的工作方式类似,但是   Web API中的控制器派生自ApiController类而不是   控制器类。你会注意到的第一个主要区别是   Web API控制器上的操作不返回视图,它们返回数据。

答案 2 :(得分:0)

您需要继承ApiController,因为它具有内置的请求/响应管道/周期。