2012-04-04 14 views
0

Ich versuche, StructureMap mit OpenRasta zu verwenden. Meine Configuration Klasse implementiert IDependencyResolverAccessor. Hier ist mein Code, um den Behälter zu konfigurieren:OpenRasta DI Probleme mit StructureMap

container.Configure(x => 
    { 
     x.For<IFileResourceRepository>().Use(
      r => new FileResourceSqlRepository(ConnectionString)); 
     x.For<ILog>().Use(l => new FileLog(LogFileName, _logLevel)); 
     x.For<ILogger>().Use<ProTeckLogger>(); 
     x.For<ILogger<CodecLogSource>>().Use<ProTeckLogger<CodecLogSource>>(); 
     x.For<ILogger<IOLogSource>>().Use<ProTeckLogger<IOLogSource>>(); 
     x.For<ILogger<OperationModelLogSource>>().Use<ProTeckLogger<OperationModelLogSource>>(); 
     x.For<ILogger<PipelineLogSource>>().Use<ProTeckLogger<PipelineLogSource>>(); 
     x.SetAllProperties(
      policy => 
      policy.Matching(
       prop => (prop.PropertyType.IsAssignableFrom(typeof (ILogger))))); 
     x.SetAllProperties(policy => policy.OfType<IFileResourceRepository>()); 
     x.SetAllProperties(policy => policy.OfType<ILog>()); 
     x.SetAllProperties(policy => policy.OfType<ILogger<CodecLogSource>>()); 
     x.SetAllProperties(policy => policy.OfType<ILogger<IOLogSource>>()); 
     x.SetAllProperties(policy => policy.OfType<ILogger<OperationModelLogSource>>()); 
     x.SetAllProperties(policy => policy.OfType<ILogger<PipelineLogSource>>()); 
    }); 

Ich erhalte die folgende Fehlermeldung:

StructureMap Exception Code: 202 
No Default Instance defined for PluginFamily System.Diagnostics.TraceSource, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 

Ich nehme vielleicht ich eine Registrierung fehlt? Könnte ich irgendetwas anderes falsch machen?

Thanks-

+0

Ich weiß nicht, ob das hilfreich ist, aber ich bin in Visual Studio (Cassini) Webserver ausgeführt. –

Antwort

0

Es scheint, dass ich in der Tat, eine Anmeldung fehlt. Addiert man diese Zeile in die Behälterkonfiguration erscheint das Problem gelöst zu haben:

x.For<TraceSource>().Use(new TraceSource("OpenRasta")); 

ich nicht ganz verstehen, wie OR verwendet Trace, aber jetzt, ich werde arbeiten nehmen!