Корпоративная библиотека ActivationException при подключении к базе данных
На моей 64-битной машине у меня есть Visual Studio 2012 с обновлением 4 и Oracle 12, включая ODP.net
Когда я пытаюсь установить соединение, я получаю исключение. Неважно, что это за строка подключения, так что я предполагаю, что она не зашла так далеко, и это проблема с ссылками /dll?
Типичный звонок:
EnterpriseLibraryContainer.Current.GetInstance<Database>(AppSettingsHandler.ConnectionStringName));
Мои строки подключения выглядят следующим образом, и оба не работают (это прекрасно работает на другом компьютере разработчика):
<connectionStrings>
<add name="DEV64" connectionString="Data Source=dev3;User Id=PISYSTEM;Password=xxx" providerName="Oracle.ManagedDataAccess.Client" />
<add name="DEV86" connectionString="Data Source=dev3;User Id=PISYSTEM;Password=xxx" providerName="System.Data.OracleClient"/>
</connectionStrings>
С базой данных все в порядке, так же как и проект, так как он работает на другом компьютере разработчика, и я полагаю, что это какая-то проблема с конфигурацией Enterprise Library. Различные поиски просто имеют случайные подсказки для неправильных DLL и т. Д., Но это все из коробки, что делается в.NET с использованием nuget. Казалось бы, немного дерьмовую библиотеку Enterprise со встроенным c:\home\chris, но я вижу, что эта папка ищет в интернете, так что, должно быть, так оно и есть.
Microsoft.Practices.ServiceLocation.ActivationException was unhandled
HResult=-2146233088
Message=Activation error occured while trying to get instance of type Database, key "DEV64"
Source=Microsoft.Practices.ServiceLocation
StackTrace:
at Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(Type serviceType, String key) in c:\Home\Chris\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs:line 57
at Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance[TService](String key) in c:\Home\Chris\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs:line 103
at PI.Data.Services.DataManager.CreateContext() in c:\dev\PositionalImprovement\PI.Data\PI.Data.Services\DataManager.cs:line 20
at PI.Business.Services.MapDataManager.getBatchList(Int32 statusID, String sortOrder) in c:\dev\PositionalImprovement\PI.Business\PI.Business.Services\MapDataManager.cs:line 44
at PIClient.MainForm.loadBatchListGrid(Int32 batchStatusID, String sort_Order) in c:\dev\PositionalImprovement\PIClient\PIClient\MainForm.cs:line 855
at PIClient.MainForm.openToolStripButton_Click(Object sender, EventArgs e) in c:\dev\PositionalImprovement\PIClient\PIClient\MainForm.cs:line 350
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at PIClient.Program.Main() in c:\dev\PositionalImprovement\PIClient\PIClient\Program.cs:line 17
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException: Microsoft.Practices.Unity.ResolutionFailedException
HResult=-2146233088
Message=Resolution of the dependency failed, type = "Microsoft.Practices.EnterpriseLibrary.Data.Database", name = "DEV64".
Exception occurred while: while resolving.
Exception is: InvalidOperationException - The type Database does not have an accessible constructor.
-----------------------------------------------
At the time of the exception, the container was:
Resolving Microsoft.Practices.EnterpriseLibrary.Data.Database,DEV64
Source=Microsoft.Practices.Unity
NameRequested=DEV64
TypeRequested=Database
StackTrace:
at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable`1 resolverOverrides)
at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, String name, IEnumerable`1 resolverOverrides)
at Microsoft.Practices.Unity.UnityContainer.Resolve(Type t, String name, ResolverOverride[] resolverOverrides)
at Microsoft.Practices.Unity.UnityServiceLocator.DoGetInstance(Type serviceType, String key)
at Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(Type serviceType, String key) in c:\Home\Chris\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs:line 49
InnerException: System.InvalidOperationException
HResult=-2146233079
Message=The type Database does not have an accessible constructor.
Source=Microsoft.Practices.Unity
StackTrace:
at Microsoft.Practices.ObjectBuilder2.DynamicMethodConstructorStrategy.ThrowForNullExistingObject(IBuilderContext context)
at BuildUp_Microsoft.Practices.EnterpriseLibrary.Data.Database(IBuilderContext )
at Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlan.BuildUp(IBuilderContext context)
at Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context)
at Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context)
at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable`1 resolverOverrides)
InnerException:
есть идеи?
Благодарю.
1 ответ
Я удалил клиент Oracle ODAC, переустановил и, как по волшебству, это сработало. Несмотря на то, что вчера я делал те же самые шаги.