Sto implementando IErrorHandler
per centralizzare tutta la gestione degli errori per il mio servizio WCF in un unico posto. Questo funziona abbastanza bene:Iniezione di dipendenze in un'implementazione di IErrorHandler
public class ServiceErrorHandler : IErrorHandler
{
public bool HandleError(Exception error)
{
// ..Log..
}
public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
{
// ..Provide fault..
}
}
Ora, stiamo usando Ninject per iniettare le dipendenze nel resto del servizio, e mi piacerebbe fare lo stesso qui. Dal momento che WCF sta costruendo gli oggetti in base alla mia configurazione, e io non credo di avere nessun hook in questo processo, ho bisogno di utilizzare l'iniezione di proprietà:
[Inject]
public ILoggingService Logger { get; set; }
Tuttavia, questo non sembra avere iniettato. Ho provato ad utilizzare le estensioni MVC di Ninject per impostare ServiceErrorHandler
per consentire l'iniezione come un filtro, ma non sembra che faccia il trucco. C'è un modo per farlo accadere?
Usi anche l'estensione di WCF Ninject? –
@DanielMarbach: ho le estensioni WCF, ma non vedo nulla in esse che possa aiutare in questa situazione. C'è qualcosa che potrei usare? – zimdanen
@zimdanen hai risolto questo problema? Il meglio sarebbe iniettare ILogger senza IoC, ma con puro ... DI puro. Basta iniettare un'interfaccia ILogger nel tuo 'ServiceErrorHandler' – Marshall