Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在新ASP.NET MVC 5项目中安装Unity时出现InvalidRegistrationException_C#_Asp.net Mvc_Visual Studio 2017_Unity Container - Fatal编程技术网

C# 在新ASP.NET MVC 5项目中安装Unity时出现InvalidRegistrationException

C# 在新ASP.NET MVC 5项目中安装Unity时出现InvalidRegistrationException,c#,asp.net-mvc,visual-studio-2017,unity-container,C#,Asp.net Mvc,Visual Studio 2017,Unity Container,在使用Unity作为IoC容器之前,我已经开发了2到3个ASP.NET MVC项目。但现在我在web应用程序中安装Unity时遇到了一个问题。我不明白发生了什么,我想这将是我忘记配置的东西 我的IDE是Visual Studio Professional 2017(15.9.24)。我创建了一个新的ASP.NET Web应用程序(.NET Framework)项目,名为WebAppWithUnitywith.NET 4.7.2。我选择MVC模板,检查WebAPI选项,然后选择个人用户帐户进行身份

在使用Unity作为IoC容器之前,我已经开发了2到3个ASP.NET MVC项目。但现在我在web应用程序中安装Unity时遇到了一个问题。我不明白发生了什么,我想这将是我忘记配置的东西

我的IDE是Visual Studio Professional 2017(15.9.24)。我创建了一个新的ASP.NET Web应用程序(.NET Framework)项目,名为
WebAppWithUnity
with.NET 4.7.2。我选择MVC模板,检查WebAPI选项,然后选择个人用户帐户进行身份验证。我不会更改任何内容并运行应用程序,因此会打开默认索引页。我可以导航到关于、联系、注册或登录页面。一切正常。我停止申请

现在,我使用Nuget将Unity.Mvc包(v5.11.1)添加到项目中。在弹出窗口中,我接受Microsoft.AspNet.WebPagesMicrosoft.AspNet.RazorMicrosoft.AspNet.Mvc软件包的许可证。使用Unity,除了安装这些软件包外,还会在App_Start文件夹中创建以下文件:UnityConfig.csUnityMvcActivator.cs。我不再做任何更改,而是运行应用程序。默认索引页再次打开。我可以导航到About和Contact,但是如果我尝试导航到Register或Login页面,我会得到一个
Unity.Exceptions.InvalidRegistrationException

UnityConfig.cs文件内容:

using System;

using Unity;

namespace WebAppWithUnity
{
    /// <summary>
    /// Specifies the Unity configuration for the main container.
    /// </summary>
    public static class UnityConfig
    {
        #region Unity Container
        private static Lazy<IUnityContainer> container =
          new Lazy<IUnityContainer>(() =>
          {
              var container = new UnityContainer();
              RegisterTypes(container);
              return container;
          });

        /// <summary>
        /// Configured Unity Container.
        /// </summary>
        public static IUnityContainer Container => container.Value;
        #endregion

        /// <summary>
        /// Registers the type mappings with the Unity container.
        /// </summary>
        /// <param name="container">The unity container to configure.</param>
        /// <remarks>
        /// There is no need to register concrete types such as controllers or
        /// API controllers (unless you want to change the defaults), as Unity
        /// allows resolving a concrete type even if it was not previously
        /// registered.
        /// </remarks>
        public static void RegisterTypes(IUnityContainer container)
        {
            // NOTE: To load from web.config uncomment the line below.
            // Make sure to add a Unity.Configuration to the using statements.
            // container.LoadConfiguration();

            // TODO: Register your type's mappings here.
            // container.RegisterType<IProductRepository, ProductRepository>();
        }
    }
}
using System.Linq;
using System.Web.Mvc;

using Unity.AspNet.Mvc;

[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(WebAppWithUnity.UnityMvcActivator), nameof(WebAppWithUnity.UnityMvcActivator.Start))]
[assembly: WebActivatorEx.ApplicationShutdownMethod(typeof(WebAppWithUnity.UnityMvcActivator), nameof(WebAppWithUnity.UnityMvcActivator.Shutdown))]

namespace WebAppWithUnity
{
    /// <summary>
    /// Provides the bootstrapping for integrating Unity with ASP.NET MVC.
    /// </summary>
    public static class UnityMvcActivator
    {
        /// <summary>
        /// Integrates Unity when the application starts.
        /// </summary>
        public static void Start() 
        {
            FilterProviders.Providers.Remove(FilterProviders.Providers.OfType<FilterAttributeFilterProvider>().First());
            FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(UnityConfig.Container));

            DependencyResolver.SetResolver(new UnityDependencyResolver(UnityConfig.Container));

            // TODO: Uncomment if you want to use PerRequestLifetimeManager
            // Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule));
        }

        /// <summary>
        /// Disposes the Unity container when the application is shut down.
        /// </summary>
        public static void Shutdown()
        {
            UnityConfig.Container.Dispose();
        }
    }
}
堆栈跟踪:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
[InvalidRegistrationException: Exception of type 'Unity.Exceptions.InvalidRegistrationException' was thrown.]

[InvalidOperationException: No public constructor is available for type Microsoft.AspNet.Identity.IUserStore`1[WebAppWithUnity.Models.ApplicationUser].]
   Unity.Processors.<>c.<GetResolver>b__15_1(BuilderContext& c) in C:\projects\container\src\Processors\Constructor\ConstructorResolution.cs:52
   Unity.Processors.<>c__DisplayClass8_0.<GetResolver>b__0(BuilderContext& c) in C:\projects\container\src\Processors\Abstracts\MemberProcessor.cs:162
   Unity.Processors.<>c__DisplayClass8_0.<GetResolver>b__0(BuilderContext& c) in C:\projects\container\src\Processors\Abstracts\MemberProcessor.cs:162
   Unity.Processors.<>c__DisplayClass8_0.<GetResolver>b__0(BuilderContext& c) in C:\projects\container\src\Processors\Abstracts\MemberProcessor.cs:162
   Unity.<>c__DisplayClass111_0.<OptimizingFactory>b__0(BuilderContext& c) in C:\projects\container\src\UnityContainer.Resolution.cs:271
   Unity.Strategies.BuildPlanStrategy.PreBuildUp(BuilderContext& context) in C:\projects\container\src\Strategies\BuildPlanStrategy.cs:80
   Unity.<>c.<.ctor>b__73_2(BuilderStrategy[] chain, BuilderContext& context) in C:\projects\container\src\UnityContainer.Resolution.cs:420
   Unity.Builder.BuilderContext.Resolve(Type type, String name, InternalRegistration registration) in C:\projects\container\src\Builder\Context\BuilderContext.cs:177
   Unity.Builder.BuilderContext.Resolve(Type type, String name) in C:\projects\container\src\Builder\Context\BuilderContext.cs:44
   Unity.Builder.BuilderContext.Resolve(ParameterInfo parameter, Object value) in C:\projects\container\src\Builder\Context\BuilderContext.cs:217
   Unity.Processors.<>c__DisplayClass7_0.<CreateParameterResolvers>b__0(BuilderContext& context) in C:\projects\container\src\Processors\Parameters\ParametersProcessor.cs:121
   Unity.Processors.<>c__DisplayClass16_0.<GetResolverDelegate>b__0(BuilderContext& c) in C:\projects\container\src\Processors\Constructor\ConstructorResolution.cs:77
   Unity.Processors.<>c__DisplayClass8_0.<GetResolver>b__0(BuilderContext& c) in C:\projects\container\src\Processors\Abstracts\MemberProcessor.cs:162
   Unity.Processors.<>c__DisplayClass8_0.<GetResolver>b__0(BuilderContext& c) in C:\projects\container\src\Processors\Abstracts\MemberProcessor.cs:162
   Unity.Processors.<>c__DisplayClass8_0.<GetResolver>b__0(BuilderContext& c) in C:\projects\container\src\Processors\Abstracts\MemberProcessor.cs:162
   Unity.<>c__DisplayClass111_0.<OptimizingFactory>b__0(BuilderContext& c) in C:\projects\container\src\UnityContainer.Resolution.cs:271
   Unity.Strategies.BuildPlanStrategy.PreBuildUp(BuilderContext& context) in C:\projects\container\src\Strategies\BuildPlanStrategy.cs:80
   Unity.<>c.<.ctor>b__73_2(BuilderStrategy[] chain, BuilderContext& context) in C:\projects\container\src\UnityContainer.Resolution.cs:420
   Unity.Builder.BuilderContext.Resolve(Type type, String name, InternalRegistration registration) in C:\projects\container\src\Builder\Context\BuilderContext.cs:177
   Unity.Builder.BuilderContext.Resolve(Type type, String name) in C:\projects\container\src\Builder\Context\BuilderContext.cs:44
   Unity.Builder.BuilderContext.Resolve(ParameterInfo parameter, Object value) in C:\projects\container\src\Builder\Context\BuilderContext.cs:217
   Unity.Processors.<>c__DisplayClass7_0.<CreateParameterResolvers>b__0(BuilderContext& context) in C:\projects\container\src\Processors\Parameters\ParametersProcessor.cs:121
   Unity.Processors.<>c__DisplayClass16_0.<GetResolverDelegate>b__0(BuilderContext& c) in C:\projects\container\src\Processors\Constructor\ConstructorResolution.cs:77
   Unity.Processors.<>c__DisplayClass8_0.<GetResolver>b__0(BuilderContext& c) in C:\projects\container\src\Processors\Abstracts\MemberProcessor.cs:162
   Unity.Processors.<>c__DisplayClass8_0.<GetResolver>b__0(BuilderContext& c) in C:\projects\container\src\Processors\Abstracts\MemberProcessor.cs:162
   Unity.Processors.<>c__DisplayClass8_0.<GetResolver>b__0(BuilderContext& c) in C:\projects\container\src\Processors\Abstracts\MemberProcessor.cs:162
   Unity.<>c__DisplayClass111_0.<OptimizingFactory>b__0(BuilderContext& c) in C:\projects\container\src\UnityContainer.Resolution.cs:271
   Unity.Strategies.BuildPlanStrategy.PreBuildUp(BuilderContext& context) in C:\projects\container\src\Strategies\BuildPlanStrategy.cs:80
   Unity.<>c.<.ctor>b__73_1(BuilderContext& context) in C:\projects\container\src\UnityContainer.Resolution.cs:344

[ResolutionFailedException: Resolution failed with error: No public constructor is available for type Microsoft.AspNet.Identity.IUserStore`1[WebAppWithUnity.Models.ApplicationUser].

For more detailed information run Unity in debug mode: new UnityContainer(ModeFlags.Diagnostic)]
   Unity.<>c.<.ctor>b__73_1(BuilderContext& context) in C:\projects\container\src\UnityContainer.Resolution.cs:363
   Unity.UnityContainer.Unity.IUnityContainer.Resolve(Type type, String name, ResolverOverride[] overrides) in C:\projects\container\src\UnityContainer.IUnityContainer.cs:244
   Unity.UnityContainerExtensions.Resolve(IUnityContainer container, Type t, ResolverOverride[] overrides) in C:\projects\abstractions\src\Extensions\Container\UnityContainer.cs:913
   Unity.AspNet.Mvc.UnityDependencyResolver.GetService(Type serviceType) in C:\projects\aspnet-mvc\src\UnityDependencyResolver.cs:37
   System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +41

[InvalidOperationException: An error occurred when trying to create a controller of type 'WebAppWithUnity.Controllers.AccountController'. Make sure that the controller has a parameterless public constructor.]
   System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +178
   System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) +80
   System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) +102
   System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) +188
   System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +50
   System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) +48
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +16
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +105
   System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +50
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +163
[InvalidRegistrationException:引发了类型为“Unity.Exceptions.InvalidRegistrationException”的异常。]
[InvalidOperationException:没有可用于Microsoft.AspNet.Identity.IUserStore`1[WebAppWithUnity.Models.ApplicationUser]类型的公共构造函数。]
c:\projects\container\src\Processors\Constructor\ConstructorResolution.cs:52中的Unity.Processors.c.b\u15\u1(BuilderContext&c)
Unity.Processors.c\uuu在c:\projects\container\src\Processors\Abstracts\MemberProcessor.cs:162中显示Class8\u0.b\u0(BuilderContext&c)
Unity.Processors.c\uuu在c:\projects\container\src\Processors\Abstracts\MemberProcessor.cs:162中显示Class8\u0.b\u0(BuilderContext&c)
Unity.Processors.c\uuu在c:\projects\container\src\Processors\Abstracts\MemberProcessor.cs:162中显示Class8\u0.b\u0(BuilderContext&c)
Unity.c\uu在c:\projects\container\src\UnityContainer.Resolution.cs:271中显示Class111\u 0.b\uu 0(BuilderContext&c)
C:\projects\container\src\Strategies\buildplantstrategy.cs:80中的Unity.Strategies.buildplantstrategy.prebuild(BuilderContext和context)
c:\projects\container\src\UnityContainer.Resolution.cs:420中的Unity.c.b_uu73_2(BuilderStrategy[]chain,BuilderContext和context)
C:\projects\container\src\Builder\Context\BuilderContext.cs:177中的Unity.Builder.BuilderContext.Resolve(类型、字符串名称、内部注册)
C:\projects\container\src\Builder\Context\BuilderContext.cs:44中的Unity.Builder.BuilderContext.Resolve(类型、字符串名称)
C:\projects\container\src\Builder\Context\BuilderContext.cs:217中的Unity.Builder.BuilderContext.Resolve(ParameterInfo参数,对象值)
Unity.Processors.c_uuu在c:\projects\container\src\Processors\Parameters\ParametersProcessor.cs:121中显示Class7_0.b_uu0(BuilderContext和context)
Unity.Processors.c\uu在c:\projects\container\src\Processors\Constructor\ConstructorResolution.cs:77中显示Class16\u0.b\u0(BuilderContext&c)
Unity.Processors.c\uuu在c:\projects\container\src\Processors\Abstracts\MemberProcessor.cs:162中显示Class8\u0.b\u0(BuilderContext&c)
Unity.Processors.c\uuu在c:\projects\container\src\Processors\Abstracts\MemberProcessor.cs:162中显示Class8\u0.b\u0(BuilderContext&c)
Unity.Processors.c\uuu在c:\projects\container\src\Processors\Abstracts\MemberProcessor.cs:162中显示Class8\u0.b\u0(BuilderContext&c)
Unity.c\uu在c:\projects\container\src\UnityContainer.Resolution.cs:271中显示Class111\u 0.b\uu 0(BuilderContext&c)
C:\projects\container\src\Strategies\buildplantstrategy.cs:80中的Unity.Strategies.buildplantstrategy.prebuild(BuilderContext和context)
c:\projects\container\src\UnityContainer.Resolution.cs:420中的Unity.c.b_uu73_2(BuilderStrategy[]chain,BuilderContext和context)
C:\projects\container\src\Builder\Context\BuilderContext.cs:177中的Unity.Builder.BuilderContext.Resolve(类型、字符串名称、内部注册)
C:\projects\container\src\Builder\Context\BuilderContext.cs:44中的Unity.Builder.BuilderContext.Resolve(类型、字符串名称)
C:\projects\container\src\Builder\Context\BuilderContext.cs:217中的Unity.Builder.BuilderContext.Resolve(ParameterInfo参数,对象值)
Unity.Processors.c_uuu在c:\projects\container\src\Processors\Parameters\ParametersProcessor.cs:121中显示Class7_0.b_uu0(BuilderContext和context)
Unity.Processors.c\uu在c:\projects\container\src\Processors\Constructor\ConstructorResolution.cs:77中显示Class16\u0.b\u0(BuilderContext&c)
Unity.Processors.c\uuu在c:\projects\container\src\Processors\Abstracts\MemberProcessor.cs:162中显示Class8\u0.b\u0(BuilderContext&c)
Unity.Processors.c\uuu在c:\projects\container\src\Processors\Abstracts\MemberProcessor.cs:162中显示Class8\u0.b\u0(BuilderContext&c)
Unity.Processors.c\uuu在c:\projects\container\src\Processors\Abstracts\MemberProcessor.cs:162中显示Class8\u0.b\u0(BuilderContext&c)
Unity.c\uu在c:\projects\container\src\UnityContainer.Resolution.cs:271中显示Class111\u 0.b\uu 0(BuilderContext&c)
C:\projects\container\src\Strategies\buildplantstrategy.cs:80中的Unity.Strategies.buildplantstrategy.prebuild(BuilderContext和context)
c:\projects\container\src\UnityContainer.Resolution.cs:344中的Unity.c.b\u 73\u 1(BuilderContext和context)
[ResolutionFailedException:解析失败,错误为:无公共构造函数