c# – Autofac – 自动注册错误:没有找到与“公共绑定标志”的
发布时间:2020-12-15 06:26:54 所属栏目:百科 来源:网络整理
导读:这是我的Global.asax.cs public void RegisterContainersUsingAutofac() { //http://elegantcode.com/2009/01/07/ioc-libraries-compared/ //http://www.codeproject.com/Articles/25380/Dependency-Injection-with-Autofac //https://code.google.com/p/aut
这是我的Global.asax.cs
public void RegisterContainersUsingAutofac() { //http://elegantcode.com/2009/01/07/ioc-libraries-compared/ //http://www.codeproject.com/Articles/25380/Dependency-Injection-with-Autofac //https://code.google.com/p/autofac/ //http://api.autofac.org/ var builder = new ContainerBuilder(); builder.RegisterModelBinders(Assembly.GetExecutingAssembly()); builder.RegisterModelBinderProvider(); //builder.RegisterType<AuthenticationService>().As<IAuthenticationService>(); builder.RegisterControllers(typeof(MvcApplication).Assembly); //builder.RegisterAssemblyTypes(typeof(SecurityService).Assembly). // Where(t => t.Name.EndsWith("Service")).AsImplementedInterfaces().InstancePerHttpRequest(); builder.RegisterType(typeof(UnitOfWork)).As(typeof(IUnitOfWork)).InstancePerLifetimeScope() .OnRelease(x =>{((IUnitOfWork)x).Commit();}); builder.RegisterAssemblyTypes(typeof(UserRepository).Assembly).Where(t => t.Name.EndsWith("Repository")).AsImplementedInterfaces(); builder.RegisterAssemblyTypes(typeof(SecurityService).Assembly).Where(t => t.Name.EndsWith("Service")).AsImplementedInterfaces(); IContainer container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); } 我有以下错误: 我注册了我实现的存储库和服务接口,但是我在哪里出错了?它在下面打破了. 这是我的userService public interface IUserService { int Login(string userNameOrEmail,string password,out int errorcode,out int timeout); bool Register(string userName,string email,string country,string language,out int errorCode); bool Register(User user,out int errorCode); bool ResetPassword(string username,string oldPassword,string newPassword,out int errorCode); void DeleteUser(string userName); } public class UserService : IUserService { private readonly IUserRepository userRepository; private UserService(IUserRepository _userRepository) { userRepository = _userRepository; } //other methods ... } 这是我的错误: [DependencyResolutionException: No constructors on type 'AppBase.Service.UserService' can be found with 'Public binding flags'.] Autofac.Core.Activators.Reflection.ReflectionActivator.ActivateInstance(IComponentContext context,IEnumerable`1 parameters) +261 Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable`1 parameters) +91 Autofac.Core.Resolving.InstanceLookup.Execute() +135 Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope,IComponentRegistration registration,IEnumerable`1 parameters) +434 Autofac.Core.Resolving.InstanceLookup.ResolveComponent(IComponentRegistration registration,IEnumerable`1 parameters) +61 Autofac.Core.Activators.Reflection.<>c__DisplayClass2.<CanSupplyValue>b__0() +68 Autofac.Core.Activators.Reflection.ConstructorParameterBinding.Instantiate() +201 Autofac.Core.Activators.Reflection.ReflectionActivator.ActivateInstance(IComponentContext context,IEnumerable`1 parameters) +499 Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable`1 parameters) +91 Autofac.Core.Resolving.InstanceLookup.Execute() +135 Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope,IEnumerable`1 parameters) +434 Autofac.Core.Resolving.ResolveOperation.ResolveComponent(IComponentRegistration registration,IEnumerable`1 parameters) +52 Autofac.Core.Resolving.ResolveOperation.Execute(IComponentRegistration registration,IEnumerable`1 parameters) +115 Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(IComponentRegistration registration,IEnumerable`1 parameters) +300 Autofac.ResolutionExtensions.TryResolveService(IComponentContext context,Service service,IEnumerable`1 parameters,Object& instance) +103 Autofac.ResolutionExtensions.ResolveOptionalService(IComponentContext context,IEnumerable`1 parameters) +218 Autofac.ResolutionExtensions.ResolveOptional(IComponentContext context,Type serviceType,IEnumerable`1 parameters) +64 Autofac.ResolutionExtensions.ResolveOptional(IComponentContext context,Type serviceType) +43 Autofac.Integration.Mvc.AutofacDependencyResolver.GetService(Type serviceType) +49 System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext,Type controllerType) +51 [InvalidOperationException: An error occurred when trying to create a controller of type 'AppBase.Web.Controllers.AccountController'. Make sure that the controller has a parameterless public constructor.] System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext,Type controllerType) +182 System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext,Type controllerType) +80 System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext,String controllerName) +74 System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext,IController& controller,IControllerFactory& factory) +232 System.Web.Mvc.<>c__DisplayClass6.<BeginProcessRequest>b__2() +49 System.Web.Mvc.<>c__DisplayClassb`1.<ProcessInApplicationTrust>b__a() +13 System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Func`1 func) +124 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext,AsyncCallback callback,Object state) +98 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext,Object state) +50 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context,AsyncCallback cb,Object extraData) +16 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8968180 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously) +184 解决方法
我不知道为什么UserService有一个私有构造函数.有没有理由呢?
通过定义构造函数,不再生成默认构造函数public UserService(). Autofac只会注入公共构造函数,您现在没有.如果您将其更改为公开,它应该工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |