我有这个问题
没有为此对象定义的无参数构造函数。描述:执行当前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
我怀疑问题在于你的控制器拥有大量的依赖关系。其中一个存储库可能具有尚未在容器中注册的依赖项。
我将研究工作单元模式,如果使用实体框架,则使用它的dbcontext(实现工作单元模式)。或者甚至更好地抽象到IAccountService并在实现中使用工作单元模式。