В моем проекте я использую Enterprise Library для подключения к базе данных. Он работает нормально, когда я запускаю приложение из Visual Studio напрямую.
Но это показывает ошибку подключения к базе данных при размещении в IIS на той же машине. Я добавил журнал трассировки и получил следующую ошибку
Не удалось разрешить зависимость, тип =
"Microsoft.Practices.EnterpriseLibrary.Data.Database", name =
"(никто)". Исключение произошло во время: при разрешении. Исключение составляет:
InvalidOperationException - Тип База данных не может быть построена.
Вы должны сконфигурировать контейнер для предоставления этого значения.
----------------------------------------------- В это время из
исключение, контейнер был:
Разрешение Microsoft.Practices.EnterpriseLibrary.Data.Database, (нет)
| Исключение: Microsoft.Practices.ServiceLocation.ActivationException:
Произошла ошибка активации при попытке получить экземпляр типа
База данных, ключ "" --->
Microsoft.Practices.Unity.ResolutionFailedException: разрешение
сбой зависимости, тип =
"Microsoft.Practices.EnterpriseLibrary.Data.Database", name =
"(никто)". Исключение произошло во время: при разрешении. Исключение составляет:
InvalidOperationException - Тип База данных не может быть построена.
Вы должны сконфигурировать контейнер для предоставления этого значения.
----------------------------------------------- В это время из
исключение, контейнер был:
Разрешение Microsoft.Practices.EnterpriseLibrary.Data.Database, (нет)
---> System.InvalidOperationException: тип База данных не может быть
построен. Вы должны настроить контейнер для предоставления этого значения.
в
Microsoft.Practices.ObjectBuilder2.DynamicMethodConstructorStrategy.GuardTypeIsNonPrimitive (IBuilderContext
контекст, SelectedConstructor selectedConstructor) в
Microsoft.Practices.ObjectBuilder2.DynamicMethodConstructorStrategy.PreBuildUp (IBuilderContext
контекст) в
Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp (IBuilderContext
контекст) в
Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlanCreatorPolicy.CreatePlan (IBuilderContext
context, NamedTypeBuildKey buildKey) в
Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp (IBuilderContext
контекст) в
Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp (IBuilderContext
контекст) в Microsoft.Practices.Unity.UnityContainer.DoBuildUp (Тип
t, объект существует, имя строки, IEnumerable 1 resolverOverrides)<br>
--- End of inner exception stack trace --- at
Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object
existing, String name, IEnumerable
1 resolverOverrides) в
Microsoft.Practices.Unity.UnityContainer.DoBuildUp (Тип t, Строка
имя, IEnumerable`1 resolverOverrides) в
Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance (Тип
serviceType, String key) --- Конец внутренней трассировки стека исключений ---
в
Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance (Тип
serviceType, String key) в
Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance [TService] (String
ключ) в
Microsoft.Practices.EnterpriseLibrary.Data.DatabaseFactory.InnerCreateDatabase (String
имя)
Мой web.config
сервис содержит, как показано ниже
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data"/>
</configSections>
<dataConfiguration defaultDatabase="OracleConnection">
<providerMappings>
<add databaseType="Microsoft.Practices.EnterpriseLibrary.Data.Oracle.OracleDatabase, Microsoft.Practices.EnterpriseLibrary.Data" name="Oracle.DataAccess.Client"/>
</providerMappings>
</dataConfiguration>
<connectionStrings>
<add name="OracleConnection" providerName="Oracle.DataAccess.Client" connectionString="User Id=***;Password=****;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=*****)(PORT=1500)) (CONNECT_DATA=(SERVER = DEDICATED) (SERVICE_NAME =*****)));"/>
<add name="SybaseConnection" connectionString="providerName=Sybase.ASEOLEDBProvider;Server=****;Port=5050;Catalog=**;User Id=***;Password=****"/>
</connectionStrings>
Я много пробовал, но не смог найти причину проблемы. (
Я проверил разрешение на папку, и все имеют полный контроль. Служба WCF в IIS Анонимный доступ включен.
Может ли кто-нибудь помочь, пожалуйста?