System.InvalidOperationException: тип База данных не может быть построена - PullRequest
2 голосов
/ 29 сентября 2011

Я пытался реорганизовать какой-то старый код в новый сервис 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, поэтому не уверены, в чем проблема.

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 30 сентября 2011

Мне интересно узнать о Microsoft.Practices.ObjectBuilder.dll и Microsoft.Practices.EnterpriseLibrary.Common - упоминаются ли они в проекте WCF?

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

Похоже, это ваша конфигурация. Вы указали значение dataConfiguration defaultDatabase в своем файле конфигурации (например, web.config )?

...