StructureMap异常代码:202没有为PluginFamily定义的默认实例

时间:2011-02-10 22:49:46

标签: c# wcf structuremap

我是StuctureMap的新手,我正在编写WCF服务。在现有代码中,以前的开发人员使用了SturctureMap。

我收到此错误:

  

StructureMap异常代码:202
  没有为PluginFamily定义的默认实例MyCompany.SMS.Data.DataEntitys,MyCompany.SMS.Data,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null

以下是代码:

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

当我们从aspx.cs文件调用此代码时,它运行正常,没有任何错误,但我尝试将此代码包装在WCF Web服务中,并且它抛出此异常。

这是堆栈跟踪:

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 个答案:

答案 0 :(得分:2)

正如您已经发现的那样,直接从Web应用程序迁移到WCF服务的问题是放置引导代码的位置。

我只是想指出你应该放弃服务定位行为并引入依赖注入,而不是松耦合,让你的服务更容易维护/改变。

Jimmy Bogard撰写了一篇关于如何使用Structure Map引导WCF服务的优秀blog entry。他使用自定义ServiceHostFactory而不是静态构造函数来引导注册表。

答案 1 :(得分: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. }
}