在尝试使用unity时,我面临一个奇怪的异常。
“无法构造类型DbConnection。您必须配置容器以提供此值”
首先,我用Google搜索了这个,但找不到任何此类异常细节。它已经有一段时间了,我正在尝试调试它,所以任何人都可以在这里指导我。
更新:我的容器配置
var connectionString=ConfigurationManager.ConnectionStrings["CaresDbEntities"].ConnectionString;
var container = new UnityContainer();
container.RegisterInstance<IUnityContainer>(container);
#region new repository n UnitOfwork configuration
container
.RegisterType(typeof(IRepository<>), typeof(Repository<>))
.RegisterType(typeof(IService<>), typeof(CrudService<>)) //yet to be tested
.RegisterType<CaresDbEntities>(new HierarchicalLifetimeManager(), new InjectionConstructor(connectionString))
.RegisterType<DbContext, CaresDbEntities>()
.RegisterType<IUnitOfWork, CaresDbEntities>();
#endregion
container.RegisterType<IUserService, UserService>();
container.RegisterType<IRoleService, RoleService>();
container.RegisterType<IMenuService, MenuService>();
container.RegisterType<IUserFunctionService, UserFunctionService>();
container.RegisterType<IFormsAuthentication, FormAuthenticationService>();
var testContainter = container.Resolve<DbContext>();
var testService1 = container.Resolve<IFormsAuthentication>();
var testService2 = container.Resolve<IUserService>();
var testService3 = container.Resolve<IMenuService>();
此异常出现在第3行和第4行代码中。提前致谢。
答案 0 :(得分:0)
我认为IUserService
和/或IMenuService
的具体实现需要在其构造函数中具体DbConnection
或者需要它的依赖项。所以请仔细检查你的构造函数 如果你真的需要使用DbConnection
,你必须在容器中注册它。