the*_*kip 7 c# asp.net-mvc asp.net-mvc-4 asp.net-web-api
在ASP.net MVC4中,有一个用于在数据模型上公开CRUD功能的Web API的"新"概念.这些控制器的基类DataController派生自ApiController.
不幸的是,这ApiController并不是IController因为这些问题无法通过普通的自定义控制器工厂来处理,因为这些请求应该返回实例IController.
有没有人知道这背后的原因,因为我不明白为什么你的MVC项目中的控制器不会派生,IController因为它会破坏你的自定义控制器工厂,因为它无法实例化项目中的每个控制器.
简而言之,由于这种继承,您无法使用DI容器来注入依赖项.
我也向微软发送了同样的问题,得到了Eilon Lipton的以下回复(thx for the):
简短的故事是,虽然ASP.NET MVC和ASP.NET Web API共享许多相同的设计概念(依赖注入,许多接口以插入自定义实现,以及易于测试),但它们构建在不同的底层HTTP堆栈上.MVC建立在已在ASP.NET中使用了10多年的System.Web堆栈之上.Web API构建在新的System.Net.Http堆栈上,为托管(IIS +自定义主机+单元测试主机)提供了更大的灵活性,以及更好的可测试性和可扩展性.如果比较IController和IHttpController,你会发现在堆栈中上下使用System.Web,而另一个根本不使用它.
无论如何,构建在ASP.NET堆栈上的所有技术 - MVC,Web窗体,Web API,Web页面(和Razor) - 将继续在应用程序中并行工作,允许您选择正确的部分来构建应用程序的每个部分.虽然每个部件中的组件的单独实现是不可互换的,但是它们每个都可以连接到相同的服务,例如依赖性注入系统,日志工具,数据提供者等.
一旦我们发布关于这个主题的帖子,我认为应该进一步澄清事情.
| 归档时间: |
|
| 查看次数: |
1738 次 |
| 最近记录: |