DAAB with COM Interop Access

Topics: Data Access Application Block
Sep 20, 2007 at 10:00 PM
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 inetinfo.exe.config).

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

Sep 21, 2007 at 2:14 PM
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?
Sep 26, 2007 at 10:46 PM
more + the conclusion (not what i wanted but oh vell)