StructureMap 2.6.1 No Default Instance defined for PluginFamily

1,319 views
Skip to first unread message

Dragn1821

unread,
Jun 29, 2010, 10:30:20 AM6/29/10
to structuremap-users
Hello,
I'm having some problems using C# with StructureMap 2.6.1. I've used
this version of StructureMap with VB and this is the first time I'm
trying it with C#.

The exception is being caused when the data context is trying to
load. Everything works fine, when I remove it as a dependency.

This worked great in VB, and I've found examples that look like I'm
setting this up correctly, but I'm still not able to make it work.

Here is the exception message and stack trace. Code is listed
below...
Anyone see anything I'm doing wrong?

Thanks!

Exception:
========

{"StructureMap Exception Code: 202\nNo Default Instance defined for
PluginFamily Tiara.Data.Data_Contexts.TiaraDataContext, Tiara.Data,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"}


Stack Trace:
=========
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.Pipeline.DefaultInstance.build(Type pluginType,
BuildSession session)
at StructureMap.Pipeline.Instance.createRawObject(Type pluginType,
BuildSession session)
at StructureMap.Pipeline.Instance.Build(Type pluginType,
BuildSession session)
at StructureMap.Pipeline.ConstructorInstance.Get(String
propertyName, Type pluginType, BuildSession session)
at StructureMap.Pipeline.ConstructorInstance.Get[T](String
propertyName, BuildSession session)
at StructureMap.Pipeline.Arguments.Get[T](String propertyName)
at lambda_method(Closure , IArguments )
at
StructureMap.Construction.BuilderCompiler.FuncCompiler`1.<>c__DisplayClass2.<CreateBuilder>b__0(IArguments
args)
at
StructureMap.Construction.InstanceBuilder.BuildInstance(IArguments
args)
at StructureMap.Pipeline.ConstructorInstance.Build(Type pluginType,
BuildSession session, IInstanceBuilder builder)
at StructureMap.Pipeline.ConstructorInstance.build(Type pluginType,
BuildSession session)
at StructureMap.Pipeline.Instance.createRawObject(Type pluginType,
BuildSession session)
at StructureMap.Pipeline.Instance.Build(Type pluginType,
BuildSession session)
at StructureMap.Pipeline.ObjectBuilder.ConstructNew(Type
pluginType, Instance instance, BuildSession session)
at StructureMap.Pipeline.ObjectBuilder.Resolve(Type pluginType,
Instance instance, BuildSession session)
at StructureMap.BuildSession.CreateInstance(Type pluginType,
Instance instance)
at StructureMap.BuildSession.<>c__DisplayClass3.<.ctor>b__1()
at StructureMap.BuildSession.CreateInstance(Type pluginType)
at StructureMap.Pipeline.DefaultInstance.build(Type pluginType,
BuildSession session)
at StructureMap.Pipeline.Instance.createRawObject(Type pluginType,
BuildSession session)
at StructureMap.Pipeline.Instance.Build(Type pluginType,
BuildSession session)
at StructureMap.Pipeline.ConstructorInstance.Get(String
propertyName, Type pluginType, BuildSession session)
at StructureMap.Pipeline.ConstructorInstance.Get[T](String
propertyName, BuildSession session)
at StructureMap.Pipeline.Arguments.Get[T](String propertyName)
at lambda_method(Closure , IArguments )
at
StructureMap.Construction.BuilderCompiler.FuncCompiler`1.<>c__DisplayClass2.<CreateBuilder>b__0(IArguments
args)
at
StructureMap.Construction.InstanceBuilder.BuildInstance(IArguments
args)
at StructureMap.Pipeline.ConstructorInstance.Build(Type pluginType,
BuildSession session, IInstanceBuilder builder)
at StructureMap.Pipeline.ConstructorInstance.build(Type pluginType,
BuildSession session)
at StructureMap.Pipeline.Instance.createRawObject(Type pluginType,
BuildSession session)
at StructureMap.Pipeline.Instance.Build(Type pluginType,
BuildSession session)
at StructureMap.Pipeline.ObjectBuilder.ConstructNew(Type
pluginType, Instance instance, BuildSession session)
at StructureMap.Pipeline.ObjectBuilder.Resolve(Type pluginType,
Instance instance, BuildSession session)
at StructureMap.BuildSession.CreateInstance(Type pluginType,
Instance instance)
at StructureMap.BuildSession.<>c__DisplayClass3.<.ctor>b__1()
at StructureMap.BuildSession.CreateInstance(Type pluginType)
at StructureMap.Pipeline.DefaultInstance.build(Type pluginType,
BuildSession session)
at StructureMap.Pipeline.Instance.createRawObject(Type pluginType,
BuildSession session)
at StructureMap.Pipeline.Instance.Build(Type pluginType,
BuildSession session)
at StructureMap.Pipeline.ConstructorInstance.Get(String
propertyName, Type pluginType, BuildSession session)
at StructureMap.Pipeline.ConstructorInstance.Get[T](String
propertyName, BuildSession session)
at StructureMap.Pipeline.Arguments.Get[T](String propertyName)
at lambda_method(Closure , IArguments )
at
StructureMap.Construction.BuilderCompiler.FuncCompiler`1.<>c__DisplayClass2.<CreateBuilder>b__0(IArguments
args)
at
StructureMap.Construction.InstanceBuilder.BuildInstance(IArguments
args)
at StructureMap.Pipeline.ConstructorInstance.Build(Type pluginType,
BuildSession session, IInstanceBuilder builder)
at StructureMap.Pipeline.ConstructorInstance.build(Type pluginType,
BuildSession session)
at StructureMap.Pipeline.Instance.createRawObject(Type pluginType,
BuildSession session)
at StructureMap.Pipeline.Instance.Build(Type pluginType,
BuildSession session)
at StructureMap.Pipeline.ObjectBuilder.ConstructNew(Type
pluginType, Instance instance, BuildSession session)
at StructureMap.Pipeline.ObjectBuilder.Resolve(Type pluginType,
Instance instance, BuildSession session)
at StructureMap.BuildSession.CreateInstance(Type pluginType,
Instance instance)
at StructureMap.BuildSession.<>c__DisplayClass3.<.ctor>b__1()
at StructureMap.BuildSession.CreateInstance(Type pluginType)
at StructureMap.Container.GetInstance(Type pluginType)
at StructureMap.ObjectFactory.GetInstance(Type pluginType)
at
StructureMapControllerFactory.GetControllerInstance(RequestContext
requestContext, Type controllerType) in C:\Documents and Settings
\cjackson\My Documents\All Projects\Current Projects\Tiara.Net\Tiara
\StructureMap\StructureMapControllerFactory.cs:line 8
at
System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext
requestContext, String controllerName)
at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase
httpContext, IController& controller, IControllerFactory& factory)
at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase
httpContext, AsyncCallback callback, Object state)
at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext
httpContext, AsyncCallback callback, Object state)
at
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext
context, AsyncCallback cb, Object extraData)
at
System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step,
Boolean& completedSynchronously)


StructureMapControllerFactory
======================

using System.Web.Mvc;
using StructureMap;

public class StructureMapControllerFactory : DefaultControllerFactory
{
protected override IController
GetControllerInstance(System.Web.Routing.RequestContext
requestContext, System.Type controllerType)
{
return ObjectFactory.GetInstance(controllerType) as
IController;
}
}

Bootstrapper
=========
using StructureMap;

public class BootStrapper
{
public static void ConfigureStructureMap()
{
ObjectFactory.Initialize(x =>
{
x.AddRegistry(new MainRegistry());
x.Scan(y =>
{
y.Assembly("Tiara");
y.WithDefaultConventions();
});
x.Scan(y =>
{
y.Assembly("Tiara.Data");
y.WithDefaultConventions();
});
x.Scan(y =>
{
y.Assembly("Tiara.Services");
y.WithDefaultConventions();
});
});
}
}

DataRegistry
=========
using StructureMap.Configuration.DSL;
using Tiara.Data.Data_Contexts;
using Tiara.Data;

public class DataRegistry : Registry
{
public DataRegistry()
{
//Data connections.
For<TiaraDataContext>().HybridHttpOrThreadLocalScoped().Use(()
=> new TiaraDataContext());

//Repositories.
For<IInvoiceRepository>().Use<InvoiceRepository>();
}
}

Tim Hoolihan

unread,
Jun 29, 2010, 10:36:28 AM6/29/10
to structure...@googlegroups.com
try changing your controller factory to something like the following, where
you handle a null controller type with a call to the
defaultcontrollerfactory base method...

public class InjectedControllerFactory : DefaultControllerFactory
{
protected override IController
GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type
controllerType)
{
if (controllerType == null) return
base.GetControllerInstance(requestContext, controllerType);
try
{
return ObjectFactory.GetInstance(controllerType) as
Controller;
}
catch (Exception)
{
Debug.WriteLine(ObjectFactory.WhatDoIHave());
throw;

Jeremy D. Miller

unread,
Jun 29, 2010, 10:39:50 AM6/29/10
to structure...@googlegroups.com
You aren't registering the DataRegistry in the code sample below.

Try Debug.WriteLine( ObjectContainer.WhatDoIHave() ); and see what's in there
 
Jeremy D. Miller
The Shade Tree Developer
jeremy...@yahoo.com



From: Dragn1821 <drag...@yahoo.com>
To: structuremap-users <structure...@googlegroups.com>
Sent: Tue, June 29, 2010 9:30:20 AM
Subject: [sm-users] StructureMap 2.6.1 No Default Instance defined for PluginFamily
--
You received this message because you are subscribed to the Google Groups "structuremap-users" group.
To post to this group, send email to structure...@googlegroups.com.
To unsubscribe from this group, send email to structuremap-users+unsub...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/structuremap-users?hl=en.


Dragn1821

unread,
Jun 29, 2010, 10:47:45 AM6/29/10
to structuremap-users
That was it. Didn't have the x.AddRegistry(new DataRegistry());

Sorry to waste your time with this one, I should have caught that one.

Thanks!


On Jun 29, 9:39 am, "Jeremy D. Miller" <jeremydmil...@yahoo.com>
wrote:
> You aren't registering the DataRegistry in the code sample below.
>
> Try Debug.WriteLine( ObjectContainer.WhatDoIHave() ); and see what's in there
>
>  Jeremy D. Miller
> The Shade Tree Developer
> jeremydmil...@yahoo.com
>
> ________________________________
> From: Dragn1821 <dragn1...@yahoo.com>
> StructureMap.Construction.BuilderCompiler.FuncCompiler`1.<>c__DisplayClass2­.<CreateBuilder>b__0(IArguments
> StructureMap.Construction.BuilderCompiler.FuncCompiler`1.<>c__DisplayClass2­.<CreateBuilder>b__0(IArguments
> StructureMap.Construction.BuilderCompiler.FuncCompiler`1.<>c__DisplayClass2­.<CreateBuilder>b__0(IArguments
> System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(­HttpContext
> context, AsyncCallback cb, Object extraData)
>    at
> System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicat­ion.IExecutionStep.Execute()
> To unsubscribe from this group, send email to structuremap-us...@googlegroups.com.

Jeremy D. Miller

unread,
Jun 29, 2010, 10:49:44 AM6/29/10
to structure...@googlegroups.com
No problem.  ObjectContainer.WhatDoIHave() is your friend.

 
Jeremy D. Miller
The Shade Tree Developer
jeremy...@yahoo.com



From: Dragn1821 <drag...@yahoo.com>
To: structuremap-users <structure...@googlegroups.com>
Sent: Tue, June 29, 2010 9:47:45 AM
Subject: [sm-users] Re: StructureMap 2.6.1 No Default Instance defined for PluginFamily
> To unsubscribe from this group, send email to structuremap-users+unsub...@googlegroups.com.

> For more options, visit this group athttp://groups.google.com/group/structuremap-users?hl=en.

--
You received this message because you are subscribed to the Google Groups "structuremap-users" group.
To post to this group, send email to structure...@googlegroups.com.
To unsubscribe from this group, send email to structuremap-users+unsub...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages