在MVc5 Repo模式中没有为此对象定义无参数构造函数

问题描述 投票:0回答:1

我有这个问题

没有为此对象定义的无参数构造函数。描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.MissingMethodException:没有为此对象定义的无参数构造函数。

我在mvc中创建了一个新项目,并使用分层架构来处理数据和存储库。所以,当我打电话给帐户控制器我ZGit这个错误

这是我的代码: - 帐户控制器

public class AccountController : Controller
    {
        private readonly IAuthentication repositoryIAuthentication;
        private readonly IUserRepository repositoryUser;
        private readonly IPostRepository repositoryPost;
        private readonly ICommentRepository repositoryComment;
        private readonly ICategoryRepository repositoryCategory;
        private readonly MembershipProvider repositoryMemberShipProvider;
        private readonly IDEncryptionRepository repositoryDEncryption;
        private readonly IEmailSettingRepository repositoryEmailSetting;
        private readonly ISettingRepository repositorySetting;
        public AccountController(IUserRepository repoUser,
                                 IAuthentication repoIAuthentication,
                                 IPostRepository repoPost,
                                 ICommentRepository repoComment,
                                 ICategoryRepository repoCategory,
                                 MembershipProvider repoMemberShipProvider,
                                 IDEncryptionRepository repoDEncryption,
                                 IEmailSettingRepository repoEmailSetting,
                                 ISettingRepository repoSetting)
        {
            repositoryUser = repoUser;
            repositoryIAuthentication = repoIAuthentication;
            repositoryCategory = repoCategory;
            repositoryComment = repoComment;
            repositoryPost = repoPost;
            repositoryMemberShipProvider = repoMemberShipProvider;
            repositoryDEncryption = repoDEncryption;
            repositoryEmailSetting = repoEmailSetting;
            repositorySetting = repoSetting;
        }

这是页面上显示的详细错误: -

[MissingMethodException:没有为此对象定义无参数构造函数。] System.RuntimeTypeHandle.CreateInstance(RuntimeType类型,Boolean publicOnly,Boolean noCheck,Boolean&canBeCached,RuntimeMethodHandleInternal&ctor,Boolean&bNeedSecurityCheck)+0 System.RuntimeType.CreateInstanceSlow(Boolean publicOnly,Boolean skipCheckThis,Boolean fillCache,StackCrawlMark&stackMark)+119 System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly,Boolean skipCheckThis,Boolean fillCache,StackCrawlMark&stackMark)+232 System.Activator.CreateInstance(Type type,Boolean nonPublic)+83 System.Activator.CreateInstance(Type type)+11 System.Web.Mvc .DefaultControllerActivator.Create(RequestContext requestContext,Type controllerType)+55

[InvalidOperationException:尝试创建“WebAppBlog.Controllers.AccountController”类型的控制器时发生错误。确保控制器具有无参数的公共构造函数。] System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext,Type controllerType)+178 System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext,Type controllerType)+76 System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext,String controllerName)+88 System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext,IController&controller,IControllerFactory&factory)+194 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext,AsyncCallback callback,Object state)+50 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext,AsyncCallback回调,对象状态)+48 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context,AsyncCallback cb,Object extraData)+16 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+ 103 System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)+48 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&completedSynchronously)+159

c# asp.net-mvc default-constructor
1个回答
0
投票

我怀疑问题在于你的控制器拥有大量的依赖关系。其中一个存储库可能具有尚未在容器中注册的依赖项。

我将研究工作单元模式,如果使用实体框架,则使用它的dbcontext(实现工作单元模式)。或者甚至更好地抽象到IAccountService并在实现中使用工作单元模式。

© www.soinside.com 2019 - 2024. All rights reserved.