Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在混合Web和MVC应用程序中使用Autofac解析Web控制器?

如何在混合Web和MVC应用程序中使用Autofac解析Web控制器?
EN

Stack Overflow用户
提问于 2014-10-14 02:16:35
回答 2查看 35.4K关注 0票数 30

嗨,我有一个MVC应用程序,其中我定义了一些对我的Web的依赖关系。

代码语言:javascript
运行
AI代码解释
复制
public class AutofacWebApiDependenceResolver : IDependencyResolver
{
    private readonly IComponentContext container;
    public AutofacWebApiDependenceResolver(IContainer container)
    {

     if (container == null)
     {
         throw new ArgumentNullException("container");
     }
     this.container = container;
    }

    public object GetService(Type serviceType)
    {
        if (serviceType == null)
        {
            throw new ArgumentNullException("serviceType");
        }
        var ret = this.container.ResolveOptional(serviceType) ;
        return ret;
    }
    public IEnumerable<object> GetServices(Type serviceType)
    {            
        if (serviceType == null)
        {
            throw new ArgumentNullException("serviceType");
        }            
        Type enumerableType = typeof(IEnumerable<>).MakeGenericType(serviceType);
        var ret = (IEnumerable<object>)this.container.ResolveOptional(enumerableType);
        return ret;
    }
}

然后,在我的引导程序类中,我在Application_Start中调用它,如下所示:

代码语言:javascript
运行
AI代码解释
复制
GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependenceResolver((IContainer)container);

当我调试代码时,我可以看到使用我的DependencyResolver注册了所有服务,但是我仍然收到以下错误:

有occurred.Type 'WebApp.Controllers.AuthenticateController‘的错误没有默认构造函数

下面是我的控制器的代码:

代码语言:javascript
运行
AI代码解释
复制
public class AuthenticateController : ApiController
{
    private readonly IFormsAuthenticationService formsAuthenticationService;
    private readonly IMemberShipProvider memberShip;
    private readonly IDataService dataService;

    public AuthenticateController(
        IMemberShipProvider memberShip,
        IFormsAuthenticationService formsAuthenticationService, IDataService dataService)
    {
        this.memberShip = memberShip;
        this.formsAuthenticationService = formsAuthenticationService;
        this.dataService= dataService;
     }

}

如何将参数带到api控制器。简单的控制器工作正常。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-15 01:32:05

恩尼瑟夫的指导成功了

builder.RegisterApiControllers(Assembly.GetExecutingAssembly())

在调用builder.RegisterApiControllers之前调用builder.Build()

票数 8
EN

Stack Overflow用户

发布于 2014-12-05 05:47:23

我建议使用MVC和WebApi在您的应用程序中完成以下工作。

首先,您的项目需要引用以下内容

  • Autofac
  • Autofac.WebApi
  • Autofac.Mvc5 (更改末尾的数字以匹配您的aspnet版本)

然后,在Autofac注册中,您将需要以下内容,它将同时注册MVC和WebApi控制器以及所需的任何其他注册。然后将容器附加到MVC DI和WebApi DI。

代码语言:javascript
运行
AI代码解释
复制
var builder= new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly()); //Register MVC Controllers
builder.RegisterApiControllers(Assembly.GetExecutingAssembly()); //Register WebApi Controllers
//Register any other components required by your code....

var container = builder.Build();

DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); //Set the MVC DependencyResolver
GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver((IContainer)container); //Set the WebApi DependencyResolver

我希望这能帮到你。

票数 68
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26358287

复制
相关文章
Django REST Framework-如何使用分页
在 Web 开发中,处理大量数据是非常常见的。但是,如果一次性返回所有数据,不仅会增加服务器的负担,而且还会影响客户端的响应时间。为了解决这个问题,分页被广泛应用于 Web 应用程序中,特别是在 RESTful API 中。
玖叁叁
2023/04/25
2.1K1
第 6 篇:分页接口
如果没有设置分页,django-rest-framework 会将所有资源类表序列化后返回,如果资源很多,就会对网站性能造成影响。为此,我们来给博客文章列表 API 添加分页功能。
HelloGitHub
2021/05/14
6700
Django REST framework初次使用
我们将使用 django-rest 创建一个简单的API,以允许管理员用户查看和编辑系统中的user和group。
用户4945346
2020/06/16
7360
python测试开发django-rest-framework-86.分页查询功能(PageNumberPagination)
当查询出来的数据量非常大的时候,需要分页查询,django-rest-framework 提供了分页的支持。 有三种分页功能:PageNumberPagination,LimitOffsetPagination,CursorPagination。
上海-悠悠
2021/02/03
1.2K0
Django REST Framework-类视图(三)
ModelViewSet是一个基于视图集的通用类,提供了处理CRUD操作的通用功能。它继承自GenericAPIView和ViewSetMixin,提供了以下方法:
玖叁叁
2023/04/24
3100
Django REST Framework-类视图(二)
除了APIView类之外,DRF还提供了许多其他的类视图,以便我们更方便地编写代码和扩展API。以下是其中的一些:
玖叁叁
2023/04/24
2920
Django REST Framework-类视图(一)
Django REST Framework提供了许多内置的视图来处理不同类型的请求。其中一种是类视图,类视图是一个基于类的视图,可以继承DRF的APIView类或其子类。类视图提供了更多的灵活性和可重用性,可以更容易地组织代码和扩展API。
玖叁叁
2023/04/24
3180
Django REST Framework
Django REST Framework 1. REST 前后端分离 API-ApplicationProgrammingInterface 为了应付千变万化的前端需求 REST:RepresataionsStateTrans 20000 Fieding博士提出 RESTful:遵守REST规范的技术设计的软件可以称为RESTful REST规范 URL代表一个资源,一个资源应该是一个名词 动作有HTTP的methode方法提供 URL应该包含版本信息,版本信息也可以放在HTTP协议中 过滤信息,使用UR
ruochen
2021/07/22
2.2K0
Django REST Framework
Django Rest Framework
https://q1mi.github.io/Django-REST-framework-documentation/
vanguard
2020/07/07
2.3K0
Django REST framework+Vue 打造生鲜超市(五) 六、商品类别数据展示
六、商品类别数据展示 6.1. 商品类别数据接口 (1)商品分类有两个接口: 一种是全部分类:一级二级三级   一种是某一类的分类以及商品详细信息:  开始写商品分类的接口 (2)序列化 给分类添加三
zhang_derek
2018/04/13
2.4K0
Django REST framework+Vue 打造生鲜超市(五)
		六、商品类别数据展示
六、商品类别数据展示
 接口相关代码都放在src/api/api.js里面,调试接口的时候我们首先需要新建一个自己的host,然后替换要调试的host
90后小陈老师
2018/10/01
1.6K0
drf分页器
也可通过自定义Pagination类,来为视图添加不同分页行为。在视图中通过pagination_clas属性来指明。例如:
仙人技术
2020/07/14
8311
django rest_framework使用jwt
jwt 不是 rest_framework自带的认证方式,需要通过第三方库djangorestframework-jwt结合使用
编程黑洞
2023/03/06
4860
django rest_framework使用jwt
Django REST Framework-分页(一)
在 Web 应用程序中,当我们从数据库中检索大量数据时,为了避免一次性返回所有数据,通常需要将数据分成多个页面。这就是分页的基本概念:将数据分成多个页面,每个页面包含一定数量的数据。
玖叁叁
2023/04/25
2980
8.寻光集后台管理系统-用户管理(增删改查)
在完成了登录和注册视图之后,需求中还需要管理员可以管理用户列表,所以就需要完成基础的增删改查操作
zx钟
2022/12/02
1.9K0
8.寻光集后台管理系统-用户管理(增删改查)
Django REST Framework-常用的类视图
Django REST Framework是基于Django的一个用于构建Web API的框架。它提供了许多用于构建Web API的工具和实用程序,其中最常用的是类视图。类视图是一种Django REST Framework的API视图,它是基于类的视图。它提供了一种方便的方式来编写可重用的Web API视图,并带有许多有用的内置功能。
玖叁叁
2023/04/24
7180
DRF框架学习(四)
重写 get_serializer_class和get_queryset,根据不同的操作返回不同的序列化器类和不同的查询集。
小闫同学啊
2019/07/18
2.8K0
Django REST framework初识
现在工作中用的就是 django-rest 框架,今天主要讲下 django-rest 是个什么东西,为什么会使用它。准确的说 django-rest 是 django web 框架的一个插件,透过Django REST framework( DRF ) 建立 REST API 非常方便快速。现在的常见的开发的模式是前后端分离模式,页面是由前端工程师使用vue、 react等前端框架编写,接口由后端工程师通过其他框架编写,简单来说,前端工程师负责页面渲染,后端工程师负责接口,为前端页面提供数据。这样前后端都由各自擅长的工程师负责,不像很早之前,前后端由一个人编写。这样做的好处是各司其职,专业的人做专业的事。开发效率也很高效,因为django开发速度比较快,如果写api接口的话用django-rest和django很搭。
用户4945346
2020/06/16
6280
点击加载更多

相似问题

Django rest如何使用PageNumberPagination分页

19

Django Rest 'PageNumberPagination‘对象没有属性’页面‘错误

34

如果页码超出范围,Django PageNumberPagination自定义错误

20

如何在Django Rest框架中使用LimitOffSetPagination而不是PageNumberPagination?

11

以Django Rest Framework / JSON格式向关系添加属性

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档