В шаблоне репо MVc5 для этого объекта не определен конструктор без параметров - PullRequest
0 голосов
/ 19 февраля 2019

У меня возникла эта проблема

Для этого объекта не определен конструктор без параметров.Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: 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;
        }

Это подробная ошибка, которая отображается на странице: -

* * 1016 [MissingMethodException: Нет. конструктор без параметров определяется для этого объекта] System.RuntimeTypeHandle.CreateInstance (тип RuntimeType, булева publicOnly, булева NOCHECK, булева & canBeCached, RuntimeMethodHandleInternal & т е р, булева & bNeedSecurityCheck) + 0
System.RuntimeType.CreateInstanceSlow(Логическое publicOnly, логическое значение skipCheckThis, логическое значение fillCache, StackCrawlMark & ​​stackMark) + 119
System.RuntimeType.CreateInstanceDefaultCtor (логическое значение publicOnly, логическое значение skipCheckThis, логическое значение тип-бар+83 System.Activator.CreateInstance (тип Type) +11 System.Web.Mvc.DefaultControllerActivator.Create (RequestContext requestContext, тип controllerType) + 55

[InvalidOperationException: Произошла ошибка при попытке создать контроллер типа «WebAppBlog.Controllers.AccountController».Убедитесь, что контроллер имеет открытый конструктор без параметров.]
System.Web.Mvc.DefaultControllerActivator.Create (RequestContext requestContext, Type controllerType) + 178
System.Web.Mvc.DefaultControllerFactory.GetControllerInstance requestContext, RequestContetecontrollerType) + 76
System.Web.Mvc.DefaultControllerFactory.CreateController (RequestContext requestContext, String controllerName) + 88
System.Web.Mvc.MvcHandler.ProcessRequestInit (фабрика контроллеров HttpContextBase & Контроллер системы управления контентом).Web.Mvc.MvcHandler.BeginProcessRequest (HttpContextBase httpContext, обратный вызов AsyncCallback, состояние объекта) + 50
System.Web.Mvc.MvcHandler.BeginProcessRequest (системный вызов HttpContext httpContext httpContext, системный вызов объекта StateWync).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) +48 System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логическое значение * complete * * 102929) + 159

1 Ответ

0 голосов
/ 19 февраля 2019

Я подозреваю, что проблема заключается в огромном количестве зависимостей вашего контроллера.Вероятно, в одном из репозиториев есть зависимость, которая не была зарегистрирована в вашем контейнере.

Я бы посмотрел в шаблон единицы работы, и если в Entity Framework используется его dbcontext (который реализует шаблон единицы работы).Или, еще лучше, абстрагироваться от IAccountService и при реализации использовать шаблон единицы работы там.

...