Код исключения StructureMap: 202 Нет экземпляра по умолчанию, определенного для PluginFamily - PullRequest
0 голосов
/ 11 февраля 2011

Я новичок в StuctureMap и пишу сервис WCF.В существующем коде предыдущий разработчик использовал SturctureMap.

Я получаю эту ошибку:

Код исключения StructureMap: 202
Не определен экземпляр по умолчанию для PluginFamily MyCompany.SMS.Data.DataEntitys, MyCompany.SMS.Data, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = ноль

Вот код:

class a
{  method aa
    {
       var db = ObjectFactory.GetInstance<nsclaimsEntities>();
    }
}

Когда мы вызываем этот кодиз файла aspx.cs он работает нормально без каких-либо ошибок, но я попытался обернуть этот код в веб-сервис WCF и выдает это исключение.

Вот трассировка стека:

at StructureMap.BuildSession.<.ctor>b__0(Type t)
at StructureMap.Util.Cache`2.get_Item(KEY key)
at StructureMap.BuildSession.CreateInstance(Type pluginType)
at StructureMap.Container.GetInstance(Type pluginType)
at StructureMap.Container.GetInstance[T]()
at StructureMap.ObjectFactory.GetInstance[PLUGINTYPE]()
at NicorNational.SMS.CustDemographic.GetByAccountNumber(String acctNum) in C:\\Projects\\NicorNational.SMS\\CustDemographic.cs:line 105
at NicorNational.Services.eCommerce.EligibilityService.GetEligibilityById(String accountId) in C:\\Projects\\Solutions\\NicorNational.Services.eCommerce\\EligibiltyService.svc.cs:line 23
at SyncInvokeGetEligibilityById(Object , Object[] , Object[] )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)"

Почему я получаю это исключение?

Ответы [ 2 ]

2 голосов
/ 12 февраля 2011

Как вы уже узнали, проблема перехода непосредственно из веб-приложения в службу WCF заключается в том, где разместить загрузочный код.

Я просто хотел бы отметить, что вы должны отойти от поведения местоположения службы и ввести внедрение зависимости вместо того, чтобы иметь слабую связь и облегчить обслуживание / изменение вашего сервиса.написал отличную запись в блоге о том, как загрузить сервис WCF с помощью Structure Map.Он использует собственный ServiceHostFactory вместо статического конструктора для начальной загрузки реестра.

0 голосов
/ 11 февраля 2011

Я исправил эту проблему, добавив статический конструктор в класс обслуживания WCF. Найти эту ссылку. переполнение стека предыдущая ссылка

public Service : IContract
{
    public Service(){ // regular constructor }
    static Service("Write your Configuration logic here"){ // Only called first time it's used. }
}
...