He intentado lo siguiente solución encontrada en How can I implement Ninject or DI on asp.net Web Forms? (respuesta de Jason)inyección de dependencias con Ninject 3 en el sitio web ASP.NET
- crear un nuevo ASP.NET Web Forms proyectan
- Uso NuGet para agregar la Ninject. lib web (que también hará bajar las librerias Ninject.Web.Common y ninject)
- Registro su fijaciones personalizadas en App_Start método/NinjectWebCommon.cs/RegisterServices
- uso de atributos de inyección en sus páginas
Funciona muy bien en aplicaciones web ASP.NET.
El problema es que quiero usar Ninject para DI en un sitio web ASP.NET , no una aplicación web.
Me he registrado fijaciones personalizadas en NinjectWebCommon/RegisterServices:
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<ITestRepository>().To<TestRepository>();
}
En una página web que inyectarlo:
public partial class _Default : System.Web.UI.Page
{
[Inject]
public ITestRepository _repository { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
System.Diagnostics.Trace.WriteLine(_repository.ExecuteOperation());
}
}
Siempre emite una excepción de referencia nula y el punto de interrupción en el interior es NinjectWebCommon.cs nunca alcanzado, a diferencia de una aplicación web.
¿Qué más se debería hacer para que Ninject 3 funcione en un sitio web?
Tenga en cuenta que se golpea el punto de interrupción porque el depurador se conecta demasiado tarde. Si escribe 'Debugger.Break()' antes de 'kernel.Bind <...> ... ', llegará a esa línea. – nebffa