Я пытался реорганизовать какой-то старый код в новый сервис WCF, основанный на net 4.0, и столкнулся с небольшими трудностями при выполнении простого упражнения!
Сценарий;
Служба WCF, размещенная по протоколу HTTP, реализует наш ServiceContract, который подключается к локальному серверу Sql.
При попытке выполнить простой тест NUnit для служебного вызова я получаю следующую ошибку:
* HelpManager.Tests.GetPage.GetPageById Fault
Исключение:
System.ServiceModel.FaultException`1 [System.ServiceModel.ExceptionDetail]:
Произошла ошибка активации при попытке получить экземпляр типа
База данных, ключ "HelpManagement" (Деталь ошибки равна An
ExceptionDetail, вероятно, созданный
IncludeExceptionDetailInFaults = true, значение которого равно:
Microsoft.Practices.ServiceLocation.ActivationException: активация
Произошла ошибка при попытке получить экземпляр типа База данных, ключ
"HelpManagement" ---->
Microsoft.Practices.Unity.ResolutionFailedException: разрешение
сбой зависимости, тип =
"Microsoft.Practices.EnterpriseLibrary.Data.Database", name =
"HelpManagement". Исключение произошло во время: при разрешении. исключение
is: InvalidOperationException - Тип База данных не может быть
построен. Вы должны сконфигурировать контейнер для предоставления этого значения.
----------------------------------------------- В это время из
исключение, контейнер был:
Разрешающая
Microsoft.Practices.EnterpriseLibrary.Data.Database, HelpManagement
----> System.InvalidOperationException: тип База данных не может быть
построен. Вы должны настроить контейнер для предоставления этого значения.
в
Microsoft.Practices.ObjectBuilder2.DynamicMethodConstructorStrategy.GuardTypeIsNonPrimiti ...).
Наш (довольно стандартный) WCF web.config для этого выглядит так:
<configSections>
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true"/>
</configSections>
<dataConfiguration defaultDatabase="HelpManagement"/>
<connectionStrings>
<add name="HelpManagement" connectionString="server=(local);database=ieq;uid=;pwd=" providerName="System.Data.SqlClient"/>
</connectionStrings>
и пример кода, используемого для его вызова;
private const string DB_HelpManagement = "HelpManagement";
var db = DatabaseFactory.CreateDatabase(DB_HelpManagement);
Гугл и другие не были веселыми. Я проверил версии и т. Д., И все они, похоже, ссылаются на тот же 5.0.14 из GAC, поэтому не уверены, в чем проблема.
Заранее спасибо