asp.net – 使用MVC4的Autofac:控制器没有默认构造函数
|
我一直在使用MVC3中的Autofac,并喜欢它.现在我试图用MVC4实现它. 我通过软件包管理器控制台(Install-Package Autofac.Mvc4 -Pre和Install-Package Autofac.WebApi -Pre)安装了Autofac MVC4和Autofac WebApi的预发行版本. 我调整了我的IoC容器如下: private static void SetAutofacContainer()
{
var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerHttpRequest().InstancePerApiRequest();
builder.RegisterType<DatabaseFactory>().As<IDatabaseFactory>().InstancePerHttpRequest().InstancePerApiRequest();
builder.RegisterType<RepositoryWrapper>().As<RepositoryWrapper>().InstancePerHttpRequest().InstancePerApiRequest();
builder.RegisterType<ServiceWrapper>().As<ServiceWrapper>().InstancePerHttpRequest().InstancePerApiRequest();
// Repositories
builder.RegisterAssemblyTypes(typeof(UserRepository).Assembly).Where(t => t.Name.EndsWith("Repository")).AsImplementedInterfaces().InstancePerHttpRequest().InstancePerApiRequest();
// Services
builder.RegisterAssemblyTypes(typeof(UserService).Assembly).Where(t => t.Name.EndsWith("Service")).AsImplementedInterfaces().InstancePerHttpRequest().InstancePerApiRequest();
IContainer container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
}
当我运行应用程序(通过访问API控制器)我得到例外: 控制器如下所示: namespace Controllers
{
[Authorize]
public class UserController : ApiController
{
private ServiceWrapper _services;
public UserController(ServiceWrapper services)
{
_services = services;
}
// GET api/user/{userrequest}
public IQueryable<User> Get(UserRequest request)
{
if (ModelState.IsValid)
{
'...
}
}
}
我错过了什么吗?我没有设置好吗?任何帮助将不胜感激! 更新 我的API控制器位于同一解决方案的单独项目中.如果我将API控制器放在我的主要MVC项目中,它可以工作.有人可以告诉我如何让Autofac在我的API项目中注册API控制器? 解决方法使用RegisterApiController方法,您可以告诉Autofac哪个(在哪个程序集中)它应该查找您的ApiControllers所以下面来电: builder.RegisterApiControllers(Assembly.GetExecutingAssembly()); 从当前程序集(project)注册ApiController. 如果您在另一个项目中也有ApiControllers,则需要使用它: builder.RegisterApiControllers(typeof(UserController).Assembly); 这意味着:将所有ApiController注册到UserController所在的程序集(project)中.因此,即使您在程序集(项目)中有多个ApiController,每个程序集只需要一个RegisterApiControllers. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 资源解释为Document但使用MIME类型applicat
- 高级ASP.NET主机
- ASP.Net Core Web Api中的异步视频流不起作用
- 使用Asp.net Mvc3 Razor视图方式扩展JQuery UI Widgets方法
- 如何使用ASP.NET标识使声明无效?
- asp.net-mvc – 我应该在Web应用程序中记录哪些信息?
- 本地化 – 如何在asp.net mvc中获取客户端区域设置?
- asp.net-mvc-3 – ASP.NET MVC3 Razor – 在将视图放置在备
- ASP.NET:global.asax中的Access Session变量
- asp.net-mvc-4 – 表单身份验证:角色(MVC 4)C#
- asp.net-mvc – MVC数据注释范围验证无法正常工作
- asp.net-mvc – MVC发布复杂对象的列表
- asp.net-mvc – 如何将NUnit作为ASP.NET MVC的测
- ASP.net会员 – 添加角色
- asp.net 读取并修改config文件实现代码
- asp.net-mvc – 当前上下文中不存在名称“ViewBa
- asp.net-mvc – 使用WCF/OData作为访问层而不是直
- asp.net – 为什么当StateProvider不是InProc时,
- asp.net-mvc – ASP.NET MVC会话状态
- asp.net-mvc – ASP.NET MVC从数据库加载Razor视
