Estoy creando una aplicación que tiene una interfaz API web ASP.NET utilizando el enfoque de autohosting. Quiero usar un alcance similar a InRequestScope()
proporcionado por MVC3. Cuando albergo una aplicación de API web en el IIS, esto parece ser compatible con Ninject.Extension.WebAPI. Pero cuando autoalobo el WebAPI obtengo una nueva instancia cuando creo enlaces InRequestScope()
. ¿Hay alguna forma de que pueda usar este alcance cuando autoaloco la API web?Uso de Ninjects InRequestScope() cuando autohosting Web API
Respuesta
Puede usar las extensiones de NamedScope para definir que el controlador define un alcance y usar ese alcance para todo lo que está en un ámbito de solicitud. Lo mejor que se utilizan las convenciones de esta definición:
const string ControllerScope = "ControllerScope";
kernel.Bind(x => x.FromThisAssembly()
.SelectAllClasses().InheritedFrom<ApiController>()
.BindToSelf()
.Configure(b => b.DefinesNamedScope(ControllerScope)));
kernel.Bind<IMyComponent>().To<MyComponent>().InNamedScope(ControllerScope);
me recomiendan para implementar INotifyWhenDisposed
para los controladores de manera que los objetos en la solicitud de alcance se liberan inmediatamente después de la solicitud. P.ej. derivando a partir de la siguiente clase en lugar de ApiController
public abstract class NinjectApiController : ApiController, INotifyWhenDisposed
{
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
this.IsDisposed = true;
this.Disposed(this, EventArgs.Empty);
}
public bool IsDisposed
{
get;
private set;
}
public event EventHandler Disposed;
}
Trato de ofrecer una extensión para WebAPI selfhosting en algún tiempo en las semanas comming.
EDIT:
Selfhosting apoyo se proporciona ahora por Ninject.Web.WebApi.Selfhosting https://nuget.org/packages/Ninject.Web.WebApi.Selfhost/3.0.2-unstable-0
Ejemplo: https://github.com/ninject/Ninject.Web.WebApi/tree/master/src/Ninject.Web.WebApi.Selfhost
- 1. autohosting asp.net mvc
- 2. Ninject InRequestScope falta
- 3. Ninject + ASP.NET MVC + InRequestScope
- 4. ¿Cómo extraigo contenido de HttpResponseMessage de POST cuando uso WEB API?
- 5. Uso de ASP.NET Web API como servicio de imágenes
- 6. Uso de la autenticación de formularios con la API web
- 7. ¿Necesito stax-api-1.0.x en mi aplicación web cuando uso JDK 1.6?
- 8. Uso de C# web api con contenido alternativo tipo
- 9. Web enlace de modelos API
- 10. heredada controlador API API Web
- 11. Ninject, Bind debe ser .InRequestScope() O .InSingletonScope()
- 12. ASP.NET Web API Web en forma
- 13. Web Services API Versioning
- 14. Web API Security
- 15. Haskell: probando API web
- 16. Web Audio API WaveShaperNode
- 17. WCF Web Api vs WebHttpBinding
- 18. Asp.Net Web Api - ModelBinders
- 19. ¿Cómo asegurar mi API web?
- 20. ¿Cuál es el uso de Log4j API?
- 21. ¿Por qué no puedo inyectar valor nulo con Ninjects ConstructorArgument?
- 22. REST Web Services API Design
- 23. Autenticación de la API web de ASP.NET
- 24. ASP.NET Web API en IE
- 25. ASP.net Web API y System.Net.Http
- 26. ¿Cómo administro la eliminación de objetos cuando uso IoC?
- 27. ASP.NET Web API descargar texto
- 28. Cómo crear API de sitio web
- 29. Web API: contenido en HttpResponseMessage
- 30. Transacciones con ASP.net WEB API
Parece que ahora hay una extensión que Ninject.Web.WebAPI lo admite, pero actualmente no figura en http://www.ninject.org/extensions.html? ¿Está esa página desactualizada y debería redirigirse a otra parte, o solo necesita actualizarse? si este último es el origen de esa página en github, ¿puedo enviar una solicitud de extracción para ayudarme? Muchas gracias, Remo !! You and ninject rock :) –
Usar ámbitos con nombre de esta manera no es compatible con ActionFilters –