2011-02-10 4 views
0

StuctureMap을 처음 사용하고 WCF 서비스를 작성하고 있습니다. 기존 코드에서 이전 개발자는 SturctureMap을 사용했습니다. 여기 구조체 예외 코드 : 202 PluginFamily에 기본 인스턴스가 정의되지 않았습니다.

StructureMap Exception Code: 202
No Default Instance defined for PluginFamily MyCompany.SMS.Data.DataEntitys, MyCompany.SMS.Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

는 코드입니다 :

는이 오류 얻을

우리가 aspx.cs에서이 코드를 호출
class a 
{ method aa 
    { 
     var db = ObjectFactory.GetInstance<nsclaimsEntities>(); 
    } 
} 

그것이 오류없이 잘 작동 파일을,하지만 난 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)" 

왜 내가이 예외를받을 수 있나요 : 여기

는 스택 추적입니까?

+0

내 생각 엔 config 파일의 관련 항목을 wcf 프로젝트로 복사하지 않았다는 것입니다.하지만 구조용 맵에서 up2speed에 있지 않습니다. – rene

+0

감사합니다. RENE !!! 웹 설정에서 일부 값을 놓치고 .... 내 목숨을 구해 줬어. 하루 종일 저를 괴롭 히고있었습니다 ... – CodeNinja

+0

죄송합니다,이 오류를 없앨 수 없습니다. 기존 ASPX 애플리케이션에 대해 말했듯이 SturucureMap을 구성하기 위해 GLOBAL.ASAX 파일을 사용하고있었습니다. 이 설정을 WCF 응용 프로그램에 추가 할 수있는 방법이 있습니까? – CodeNinja

답변

2

는 WCF 서비스에 웹 응용 프로그램에서 바로 마이그레이션 문제입니다.

단지 서비스 위치 동작에서 벗어나 종속성 삽입을 도입하여 느슨한 결합을 유지하고 서비스를보다 쉽게 ​​유지/변경하도록해야한다는 점을 지적하고자합니다.

Jimmy Bogard는 구조도를 사용하여 WCF 서비스를 부트 스트랩하는 방법에 대해 blog entry을 작성했습니다. 그는 정적 생성자 대신 사용자 정의 ServiceHostFactory를 사용하여 레지스트리를 부트 스트랩합니다.

+0

위대한 PHeiberg !! 그것의 일, 당신의 대답을위한 1 톤을 감사하십시오 !! – CodeNinja

0

정적 생성자를 WCF 서비스 클래스에 추가하여이 문제를 해결했습니다. 이 링크를 찾으십시오. 당신이 이미 발견했듯이 부트 스트랩 코드를 배치 할 위치를 stack overflow previous link

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