visual studio servidor error denegado aplicación acceso c# asp.net structuremap

c# - studio - Código de excepción de StructureMap: 202 No se definió ninguna instancia predeterminada para PluginFamily



error de servidor en la aplicación ''/'' acceso denegado (7)

¿Dónde está tu bootstrapping para la clase concreta de IConfiguration?

Es decir:

x.For<IConfiguration>().Use<Configuration>();

Soy nuevo en StructureMap. He descargado y estoy usando la versión 2.6.1.0. Sigo recibiendo el siguiente error:

Código de excepción de StructureMap: 202 Ninguna instancia predeterminada definida para PluginFamily Company.ProjectCore.Core.IConfiguration, Company.ProjectCore, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null

Mi Global.asax.cs se parece a:

protected void Application_Start(object sender, EventArgs e) { var container = new Container(x => { x.For<ICache>().Use<Cache>(); x.For<IEmailService>().Use<EmailService>(); x.For<IUserSession>().Use<UserSession>(); x.For<IRedirector>().Use<Redirector>(); x.For<INavigation>().Use<Navigation>(); }); container.AssertConfigurationIsValid(); }

Cambié de ObjectFactory.Initialize a "new Container" para depurar. Al pasar por el método AssertConfigurationIsValid (), Cache funciona pero EmailService falla en el método GetInstance en la siguiente línea:

[Pluggable("Default")] public class EmailService : IEmailService private readonly IConfiguration _configuration; public EmailService() { _configuration = ObjectFactory.GetInstance<IConfiguration>(); }

Si elimino IEmailService, se produce el mismo error 202 en IUserSession.

¿Debo agregar algo más en Application_Start o en mis archivos de clase?

Gracias por adelantado...


Cuando obtuve este error fue porque olvidé marcar mi clase como public . Que simple


Estaba viendo el mismo error. En mi caso, tenía un error tipográfico en el nombre de la implementación, por lo que la interfaz y los nombres de la implementación no coincidían.

public class FooTypo : IFoo

Donde debería haber tenido:

public class Foo : IFoo


Este problema se solucionó reemplazando ObjectFactory.Initialize con ObjectFactory.Configure y agregando los ensamblados en mi proyecto:

ObjectFactory.Configure(x => { x.Scan(scan => { scan.LookForRegistries(); scan.Assembly("MyAssembly"); scan.Assembly("MyAssembly"); }); });


Otra cosa que debe buscar es asegurarse de que la dependencia (clase) que está inyectando es pública . Si la clase es interna, puede causar este problema.


Recibía el mismo mensaje de error, pero por una razón diferente. Tenía una clase de Foo que definía dos constructores así:

public class Foo : IFoo { private Bar _bar; public Foo() { _bar = new Bar(); } public Foo(Bar bar) { _bar = bar; } }

y mi configuración de StructureMap era así:

For<IFoo>.Use<Foo>();

Seguí recibiendo un mensaje de error como

202 Ninguna instancia predeterminada definida para barra

El problema era que StructureMap intentaba construir un Foo usando el constructor que toma un parámetro, en lugar de usar el constructor predeterminado sin parámetros. Lo resolví usando la respuesta en ¿Cómo definir un constructor predeterminado por código usando StructureMap? al igual que:

For<IFoo>.Use(() => new Foo());


También tuve este problema cuando estaba usando Visual Studio 2015 con NCrunch. Todo lo que tiene que hacer es alternar una opción a true en el elemento del menú de configuración en NCrunch. Cambiar de inicializar para configurar no funcionó para mí.

La opción está en Configuración de compilación, se denomina '' Copiar ensamblajes referenciados al área de trabajo ''