here is what we have:
we have a large legacy ASP website. we have tons of COM components.
we have a new .NET website that is using the enterprise library, 2.0.
the two sites are starting to merge. we have a COM component that is acting as an interop between a .NET assembly and ASP. this assembly (with the interop COM interface added) calls into other assemblies, one being a database access assembly that uses the DAAB.
there is an <appname>.exe.config file in the assembly folder.
it seems that the only way that i can use this assembly, and hence the EntLib, is to put my assembly and the EntLib DLL's in to the system32\inetsrv folder (inetinfo.exe location), as well as putting the .config file in the same folder (after renaming it to
my goal is to call in to an ASP page, which creates this Interop DLL and calls in to other assemblies to access the DAAB and other EntLib features.
should i load the EntLib within my app first? or put the EntLib in the GAC?
here is the stack trace i retrieve after trying to access the EntLib via my Interop Assembly:
at Microsoft.Practices.EnterpriseLibrary.Data.DatabaseConfigurationView..ctor(IConfigurationSource configurationSource)
at Microsoft.Practices.EnterpriseLibrary.Data.DatabaseCustomFactory.CreateObject(IBuilderContext context, String name, IConfigurationSource configurationSource, ConfigurationReflectionCache reflectionCache)
at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.ConfiguredObjectStrategy.BuildUp(IBuilderContext context, Type t, Object existing, String id)
at Microsoft.Practices.ObjectBuilder.SingletonStrategy.BuildUp(IBuilderContext context, Type typeToBuild, Object existing, String idToBuild)
at Microsoft.Practices.ObjectBuilder.BuilderStrategy.BuildUp(IBuilderContext context, Type typeToBuild, Object existing, String idToBuild)
at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.ConfigurationNameMappingStrategy.BuildUp(IBuilderContext context, Type t, Object existing, String id)
at Microsoft.Practices.ObjectBuilder.BuilderBase`1.DoBuildUp(IReadWriteLocator locator, Type typeToBuild, String idToBuild, Object existing, PolicyList transientPolicies)
at Microsoft.Practices.ObjectBuilder.BuilderBase`1.BuildUp(IReadWriteLocator locator, Type typeToBuild, String idToBuild, Object existing, PolicyList transientPolicies)
at Microsoft.Practices.ObjectBuilder.BuilderBase`1.BuildUpTTypeToBuild(IReadWriteLocator locator, String idToBuild, Object existing, PolicyList transientPolicies)
at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.EnterpriseLibraryFactory.BuildUpT(IReadWriteLocator locator, String id, IConfigurationSource configurationSource)
at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.EnterpriseLibraryFactory.BuildUpT(String id, IConfigurationSource configurationSource)
at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.NameTypeFactoryBase`1.Create(String name)
at Microsoft.Practices.EnterpriseLibrary.Data.DatabaseFactory.CreateDatabase(String name)
at MyAssembly.Name.Functation(String param) in C:\my\path\Assemblies\another.assembly.that.is.being.used\classname.cs:line xxx
we've found that the EntLib is having trouble being accessed via the COM InterOp assembly when the components aren't all in the same folder. initially is was inetinfo.exe but further testing trying to use the interop assembly with cscript confirmed it.
we do not want to put anything in to the GAC, even though we can if it's the last resort...
any other suggestions?
more + the conclusion (not what i wanted but oh vell)