Asp.net mvc 无法使用简单注入器为每个请求创建DbContext

Asp.net mvc 无法使用简单注入器为每个请求创建DbContext,asp.net-mvc,entity-framework,dependency-injection,ninject,simple-injector,Asp.net Mvc,Entity Framework,Dependency Injection,Ninject,Simple Injector,Simple Inject在尝试注册我的DbContext时引发以下异常 提供的连接字符串无效,因为它包含的映射或元数据信息不足。 参数名称:connectionString 我是DI新手,可能会错过一些相当明显的东西。连接字符串看起来很好。它与通常用于创建DbContext的相同。我试图解决这个问题 公共静态类SimpleInjector初始值设定项 { ///初始化容器并注册 //它被称为MVC3依赖项解析器。 公共静态void Initialize() { var container=新容

Simple Inject在尝试注册我的DbContext时引发以下异常

提供的连接字符串无效,因为它包含的映射或元数据信息不足。 参数名称:connectionString

我是DI新手,可能会错过一些相当明显的东西。连接字符串看起来很好。它与通常用于创建DbContext的相同。我试图解决这个问题

公共静态类SimpleInjector初始值设定项
{
///初始化容器并注册
//它被称为MVC3依赖项解析器。
公共静态void Initialize()
{
var container=新容器();
初始化容器(容器);
container.registerMVCC控制器(
Assembly.getExecutionGassembly());
container.RegisterMvcAttributeFilterProvider();
container.Verify();
DependencyResolver.SetResolver(
新的SimpleInjectorDependencyResolver(容器));
}
私有静态无效初始化容器(
集装箱(集装箱)
{
}
}
更新:我仍然没有解决我的问题,但它与这个问题非常相似

堆栈跟踪:

System.InvalidOperationException was unhandled by user code
  Message=The configuration is invalid. Creating the instance for type _AccountController failed. Error occurred while trying to get an instance of type _AccountController. The type initializer for 'Web.Controllers._AccountController' threw an exception.
  Source=SimpleInjector
  StackTrace:
       at SimpleInjector.Helpers.Verify(IInstanceProducer instanceProducer, Type serviceType)
       at SimpleInjector.Container.ValidateRegistrations()
       at SimpleInjector.Container.Verify()
       at Web.App_Start.SimpleInjectorInitializer.Initialize() in C:\workspace\BrowsarServer\QARSite\Web\App_Start\SimpleInjectorInitializer.cs:line 24
  InnerException: SimpleInjector.ActivationException
       Message=Error occurred while trying to get an instance of type _AccountController. The type initializer for 'Web.Controllers._AccountController' threw an exception.
       Source=SimpleInjector
       StackTrace:
            at SimpleInjector.InstanceProducers.InstanceProducer.ThrowErrorWhileTryingToGetInstanceOfType(Exception innerException)
            at SimpleInjector.InstanceProducers.InstanceProducer.GetInstance()
            at SimpleInjector.Helpers.Verify(IInstanceProducer instanceProducer, Type serviceType)
       InnerException: System.TypeInitializationException
            Message=The type initializer for 'Web.Controllers._AccountController' threw an exception.
            Source=Web
            TypeName=Web.Controllers._AccountController
            StackTrace:
                 at Web.Controllers._AccountController..ctor()
                 at lambda_method(Closure )
                 at SimpleInjector.InstanceProducers.InstanceProducer.GetInstance()
            InnerException: System.ArgumentException
                 Message=The supplied connection string is not valid, because it contains insufficient mapping or metadata information.
Parameter name: connectionString
                 Source=System.Data.Entity
                 ParamName=connectionString
                 StackTrace:
                      at System.Data.Objects.ObjectContext..ctor(EntityConnection connection, Boolean isConnectionConstructor)
                      at System.Data.Objects.ObjectContext..ctor(String connectionString, String defaultContainerName)
                      at Web.Models.BrowsarEntities..ctor() in C:\workspace\BrowsarServer\QARSite\Web\Models\Browsar.Designer.cs:line 90
                      at Web.Controllers._AccountController..cctor() in C:\workspace\BrowsarServer\QARSite\Web\Controllers\_AccountController.cs:line 15
                 InnerException: System.InvalidOperationException
                      Message=Unable to determine application context. The ASP.NET application path could not be resolved.
                      Source=System.Data.Entity
                      StackTrace:
                           at System.Data.Metadata.Edm.AspProxy.GetBuildManagerReferencedAssemblies()
                           at System.Data.Metadata.Edm.DefaultAssemblyResolver.GetAllDiscoverableAssemblies()
                           at System.Data.Metadata.Edm.DefaultAssemblyResolver.GetWildcardAssemblies()
                           at System.Data.Metadata.Edm.MetadataArtifactLoaderCompositeResource.LoadResources(String assemblyName, String resourceName, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver)
                           at System.Data.Metadata.Edm.MetadataArtifactLoaderCompositeResource.CreateResourceLoader(String path, ExtensionCheck extensionCheck, String validExtension, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver)
                           at System.Data.Metadata.Edm.MetadataArtifactLoader.Create(String path, ExtensionCheck extensionCheck, String validExtension, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver)
                           at System.Data.Metadata.Edm.MetadataCache.SplitPaths(String paths)
                           at System.Data.Common.Utils.Memoizer`2.<>c__DisplayClass2.<Evaluate>b__0()
                           at System.Data.Common.Utils.Memoizer`2.Result.GetValue()
                           at System.Data.Common.Utils.Memoizer`2.Evaluate(TArg arg)
                           at System.Data.EntityClient.EntityConnection.GetMetadataWorkspace(Boolean initializeAllCollections)
                           at System.Data.Objects.ObjectContext.RetrieveMetadataWorkspaceFromConnection()
                           at System.Data.Objects.ObjectContext..ctor(EntityConnection connection, Boolean isConnectionConstructor)
                      InnerException: System.Reflection.TargetInvocationException
                           Message=Exception has been thrown by the target of an invocation.
                           Source=mscorlib
                           StackTrace:
                                at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
                                at System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
                                at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
                                at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
                                at System.Data.Metadata.Edm.AspProxy.GetBuildManagerReferencedAssemblies()
                           InnerException: System.InvalidOperationException
                                Message=This method cannot be called during the application's pre-start initialization stage.
                                Source=System.Web
                                StackTrace:
                                     at System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()
                                     at System.Web.Compilation.BuildManager.GetReferencedAssemblies()
                                InnerException: 
用户代码未处理System.InvalidOperationException 消息=配置无效。为类型_AccountController创建实例失败。尝试获取类型为\u AccountController的实例时出错。“Web.Controllers.\u AccountController”的类型初始值设定项引发异常。 Source=SimpleInjector 堆栈跟踪: 在SimpleInjector.Helpers.Verify(IInstanceProducer instanceProducer,键入serviceType) 在SimpleInjector.Container.ValidateRegistrations()中 在SimpleInjector.Container.Verify()中 在C:\workspace\BrowsarServer\QARSite\Web\App\u Start\SimpleInjectorInitializer.cs中的Web.App\u Start.SimpleInjectorInitializer.Initialize()处:第24行 InnerException:SimpleInjector.ActivationException Message=尝试获取类型为_AccountController的实例时出错。“Web.Controllers.\u AccountController”的类型初始值设定项引发异常。 Source=SimpleInjector 堆栈跟踪: 在SimpleInjector.InstanceProducers.InstanceProducer.Throwerr处,尝试切换到StatanceOfType(异常innerException) 在SimpleInputer.InstanceProducers.InstanceProducer.GetInstance()上 在SimpleInjector.Helpers.Verify(IInstanceProducer instanceProducer,键入serviceType) InnerException:System.TypeInitializationException Message=Web.Controllers.\u AccountController'的类型初始值设定项引发异常。 来源=网络 TypeName=Web.Controllers.\u AccountController 堆栈跟踪: 在Web.Controllers.\u AccountController..ctor()上 lambda_法(闭合) 在SimpleInputer.InstanceProducers.InstanceProducer.GetInstance()上 InnerException:System.ArgumentException Message=提供的连接字符串无效,因为它包含的映射或元数据信息不足。 参数名称:connectionString Source=System.Data.Entity ParamName=connectionString 堆栈跟踪: 位于System.Data.Objects.ObjectContext..ctor(EntityConnection连接,布尔isConnectionConstructor) 位于System.Data.Objects.ObjectContext..ctor(String connectionString,String defaultContainerName) 在C:\workspace\BrowsarServer\QARSite\Web\Models\Browsar.Designer.cs中的Web.Models.BrowsarEntities..ctor()处:第90行 位于C:\workspace\BrowsarServer\QARSite\Web\Controllers\\u AccountController.cs中的Web.Controllers.\u AccountController..cctor():第15行 InnerException:System.InvalidOperationException 消息=无法确定应用程序上下文。无法解析ASP.NET应用程序路径。 Source=System.Data.Entity 堆栈跟踪: 位于System.Data.Metadata.Edm.AspProxy.GetBuildManagerReferencedAssemblies()处 在System.Data.Metadata.Edm.DefaultAssemblyResolver.GetAllDiscoverableAssemblies()中 位于System.Data.Metadata.Edm.DefaultAssemblyResolver.GetWildcardAssemblys()处 位于System.Data.Metadata.Edm.MetadataArtifactLoaderCompositeResource.LoadResources(String assemblyName,String resourceName,ICollection`1 uriRegistry,MetadataArtifactAssemblyResolver解析程序) 位于System.Data.Metadata.Edm.MetadataArtifactLoaderCompositeResource.CreateResourceLoader(字符串路径、ExtensionCheck ExtensionCheck、字符串validExtension、ICollection`1 uriRegistry、MetadataArtifactAssemblyResolver解析程序) 在System.Data.Metadata.Edm.MetadataArtifactLoader.Create(字符串路径、ExtensionCheck ExtensionCheck、字符串validExtension、ICollection`1 uriRegistry、MetadataArtifactAssemblyResolver解析程序) 位于System.Data.Metadata.Edm.MetadataCache.SplitPath(字符串路径) 在System.Data.Common.Utils.Memoizer`2.c_uudisplayClass2.b_uu0()中 在System.Data.Common.Utils.Memoizer`2.Result.GetValue()中 at System.Data.Common.Utils.Memoizer`2.Evaluate(TArg arg) 位于System.Data.EntityClient.EntityConnection.GetMetadataWorkspace(布尔初始化AllCollections) 位于System.Data.Objects.ObjectContext.RetrieveMetadataWorkspaceFromConnection()处 位于System.Data.Objects.ObjectContext..ctor(EntityConnection连接,布尔isConnectionConstructor) InnerException:System.Reflection.TargetInvocation
System.InvalidOperationException was unhandled by user code
  Message=The configuration is invalid. Creating the instance for type _AccountController failed. Error occurred while trying to get an instance of type _AccountController. The type initializer for 'Web.Controllers._AccountController' threw an exception.
  Source=SimpleInjector
  StackTrace:
       at SimpleInjector.Helpers.Verify(IInstanceProducer instanceProducer, Type serviceType)
       at SimpleInjector.Container.ValidateRegistrations()
       at SimpleInjector.Container.Verify()
       at Web.App_Start.SimpleInjectorInitializer.Initialize() in C:\workspace\BrowsarServer\QARSite\Web\App_Start\SimpleInjectorInitializer.cs:line 24
  InnerException: SimpleInjector.ActivationException
       Message=Error occurred while trying to get an instance of type _AccountController. The type initializer for 'Web.Controllers._AccountController' threw an exception.
       Source=SimpleInjector
       StackTrace:
            at SimpleInjector.InstanceProducers.InstanceProducer.ThrowErrorWhileTryingToGetInstanceOfType(Exception innerException)
            at SimpleInjector.InstanceProducers.InstanceProducer.GetInstance()
            at SimpleInjector.Helpers.Verify(IInstanceProducer instanceProducer, Type serviceType)
       InnerException: System.TypeInitializationException
            Message=The type initializer for 'Web.Controllers._AccountController' threw an exception.
            Source=Web
            TypeName=Web.Controllers._AccountController
            StackTrace:
                 at Web.Controllers._AccountController..ctor()
                 at lambda_method(Closure )
                 at SimpleInjector.InstanceProducers.InstanceProducer.GetInstance()
            InnerException: System.ArgumentException
                 Message=The supplied connection string is not valid, because it contains insufficient mapping or metadata information.
Parameter name: connectionString
                 Source=System.Data.Entity
                 ParamName=connectionString
                 StackTrace:
                      at System.Data.Objects.ObjectContext..ctor(EntityConnection connection, Boolean isConnectionConstructor)
                      at System.Data.Objects.ObjectContext..ctor(String connectionString, String defaultContainerName)
                      at Web.Models.BrowsarEntities..ctor() in C:\workspace\BrowsarServer\QARSite\Web\Models\Browsar.Designer.cs:line 90
                      at Web.Controllers._AccountController..cctor() in C:\workspace\BrowsarServer\QARSite\Web\Controllers\_AccountController.cs:line 15
                 InnerException: System.InvalidOperationException
                      Message=Unable to determine application context. The ASP.NET application path could not be resolved.
                      Source=System.Data.Entity
                      StackTrace:
                           at System.Data.Metadata.Edm.AspProxy.GetBuildManagerReferencedAssemblies()
                           at System.Data.Metadata.Edm.DefaultAssemblyResolver.GetAllDiscoverableAssemblies()
                           at System.Data.Metadata.Edm.DefaultAssemblyResolver.GetWildcardAssemblies()
                           at System.Data.Metadata.Edm.MetadataArtifactLoaderCompositeResource.LoadResources(String assemblyName, String resourceName, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver)
                           at System.Data.Metadata.Edm.MetadataArtifactLoaderCompositeResource.CreateResourceLoader(String path, ExtensionCheck extensionCheck, String validExtension, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver)
                           at System.Data.Metadata.Edm.MetadataArtifactLoader.Create(String path, ExtensionCheck extensionCheck, String validExtension, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver)
                           at System.Data.Metadata.Edm.MetadataCache.SplitPaths(String paths)
                           at System.Data.Common.Utils.Memoizer`2.<>c__DisplayClass2.<Evaluate>b__0()
                           at System.Data.Common.Utils.Memoizer`2.Result.GetValue()
                           at System.Data.Common.Utils.Memoizer`2.Evaluate(TArg arg)
                           at System.Data.EntityClient.EntityConnection.GetMetadataWorkspace(Boolean initializeAllCollections)
                           at System.Data.Objects.ObjectContext.RetrieveMetadataWorkspaceFromConnection()
                           at System.Data.Objects.ObjectContext..ctor(EntityConnection connection, Boolean isConnectionConstructor)
                      InnerException: System.Reflection.TargetInvocationException
                           Message=Exception has been thrown by the target of an invocation.
                           Source=mscorlib
                           StackTrace:
                                at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
                                at System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
                                at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
                                at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
                                at System.Data.Metadata.Edm.AspProxy.GetBuildManagerReferencedAssemblies()
                           InnerException: System.InvalidOperationException
                                Message=This method cannot be called during the application's pre-start initialization stage.
                                Source=System.Web
                                StackTrace:
                                     at System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()
                                     at System.Web.Compilation.BuildManager.GetReferencedAssemblies()
                                InnerException: 
<add name="MyEntities" connectionString="metadata=res://*/MyEntitiesStore.csdl|res://*/MyEntitiesStore.ssdl|res://*/MyEntitiesStore.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=<your server>;Initial Catalog=<your DB>;Integrated Security=False;User ID=<user>;Password=<pass>;MultipleActiveResultSets=True&quot;" 
   providerName="System.Data.EntityClient" />