Служба WCF показывает ошибку после реализации в IIS - PullRequest
0 голосов
/ 03 сентября 2011

В моем проекте я использую 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 Анонимный доступ включен.

Может ли кто-нибудь помочь, пожалуйста?

Ответы [ 2 ]

1 голос
/ 03 сентября 2011

Используемая вами сборка не может найти одну из сборок, от которой она зависит, убедитесь, что все зависимости находятся либо в GAC, либо в папке bin вашего веб-приложения.

0 голосов
/ 04 сентября 2011

Когда я включил 32-разрядные приложения в IIS, ошибка была изменена на

ORA-12638: не удалось получить учетные данные

Строка подключения правильная, которая работает с visual studio.

Есть ли какие-либо настройки, которые нам необходимо выполнить в части Oralce для доступа к соединению из IIS?

Это работало нормально при обновлении файла sqlnet.ora oracle.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...