2012-07-09 2 views
7

Ho appena installato ELMAH MVC (v2) nella mia applicazione web, ma quando cerco di visualizzare i log in/ELMAH ottengo la seguente eccezioneELMAH MVC 2 - Problema con il Castello di Windsor

Nessun componente per il supporto il servizio è stato trovato Elmah.Mvc.ElmahController [ComponentNotFoundException: Nessun componente per supportare il servizio è stato trovato Elmah.Mvc.ElmahController] Castle.MicroKernel.DefaultKernel.Resolve (servizio Type) 140 Castle.Windsor.WindsorContainer.Resolve (Tipo di servizio) +40 N2.Engine.Castle.WindsorServiceContainer.Resolve (Tipo tipo) +40 N2.Engine.ContentEngine.Resolve (tipo ser viceType) +48

Il sito Web include il sistema N2 CMS che a sua volta utilizza Castle Windsor.

Qualche idea su come posso risolvere questo?

risposta

0

Elaborato la soluzione poco dopo aver postato la domanda. Avevo bisogno di registrare il controller Elmah con N2:

var engine = MvcEngine.Create(); 
engine.RegisterControllers(typeof(GlobalApplication).Assembly); 
engine.RegisterControllers(typeof(ElmahController).Assembly); 
0

ELMAH.MVC viene codice App_Start, che utilizza Web.Activator registrare percorso ElmahController.

Quindi, è strano per me, perché Windor non riesce a caricare ElmahController. Per impostazione predefinita, dovrebbe cercare di risolverlo da solo, quindi se non è possibile delegare a ControllerFactory.

Sei sicuro che l'applicazione è stata riavviata (iisreset.exe) dopo l'installazione di ELMAH?

+0

Ciao Alexander, ho appena ripetuto il test per assicurarmi di aver riavviato IIS (IIS Express in questo caso come su una macchina di sviluppo) I e sicuramente devo registrare il controller Elmah con il motore N2 per poter visualizzare i log di Elmah – FloatLeft

+0

@alexanderb Hey Alex, sto usando Windsor anche con Elmah.MVC (prima volta con questo sapore) e quando vado su mysite.com/elmah ottengo il messaggio "Nessun componente per supportare il servizio Elmah.Mvc.ElmahController era trovato". Qualche suggerimento? Inoltre, non sono riuscito a trovare alcuna documentazione dedicata su Elmah.MVC oltre a frammenti nel tuo blog. –

+0

@DanB hi Dan, sfortunatamente è difficile diagnosticare il problema solo da "air" :) .. Vorrei chiederti un favore - potresti sollevare il problema su [github] (https: // github. com/alexanderbeletsky/elmah.mvc) e ha inviato una soluzione "interrotta" al mio indirizzo e-mail (nel mio profilo). Prometto di trovare il problema e sono tornato con la soluzione :) –

15

So che questo è già una risposta accettata, e non è del tutto pertinente alla tua domanda, ma per chiunque altro non utilizzando N2 e in esecuzione in problemi con Elmah.MVC + Castello di Windsor, è necessario registrare il controller in l'assemblea Elmah.MVC con Windsor. Ho fatto un semplice programma di installazione per gestire questo per me:

public class ElamhInstaller : IWindsorInstaller 
{ 
    public void Install(IWindsorContainer container, IConfigurationStore store) 
    { 
     container.Register(Classes.FromAssemblyNamed("Elmah.Mvc") 
      .BasedOn<IController>() 
      .LifestyleTransient()); 
    } 
} 

Una volta ho aggiunto questo castello sembra essere in grado di trovare la ElmahController bene.

+0

Grazie.L'unica cosa che dovevo cambiare per far funzionare i miei test di integrazione in Team City era "Classes.FromAssemblyNamed (" Elmah.Mvc ")" in questo "Classes.FromAssembly (typeof (ElmahController) .Assembly)". Un qualche tipo di ottimizzazione ha rimosso la DLL e ho ottenuto "Impossibile caricare file o assembly 'Elmah.Mvc'" –