atıldığı için işlem tamamlanamıyor. Bu nedenle, numaralı Öznitelikler ve Filtreler ile basit bir depo deseni kullanıyorum çünkü NuGet'ten Ninject.Web.WebApi-RC
paketini kullanıyorum.Ninject WebAPI DbContext
Bu ilk istek için çalışır ama benim DbContext
istekte kapsamını beri, bundan sonraki tüm istekleri üzerine yerleştirilmiştir.
this.Kernel.Bind<MyDbContext>().ToSelf().InRequestScope();
this.Kernel.Bind<IRepository>().To<Repository>().InRequestScope();
this.Kernel.BindHttpFilter<CommunicationKeyValidationFilter>(FilterScope.Action)
.WhenActionMethodHas<CommunicationKeyValidationAttribute>()
.InRequestScope();
: Burada
public class Repository : IRepository
{
public Repository(MyDbContext dbContext)
{
this.dbContext = dbContext;
}
}
benim Ninject bağlamaları şunlardır:
İştepublic class CommunicationKeyValidationFilter : AbstractActionFilter
{
public CommunicationKeyValidationFilter(IRepository repository)
{
this.repository = repository;
}
public override void OnActionExecuting(HttpActionContext actionContext)
{
// do stuff
}
}
benim deposudur: Burada
public class CommunicationKeyValidationAttribute : FilterAttribute
{
}
benim filtresidir: Burada
benim niteliktir
Benim kontrolör şöyle görünür: Burada
public class HomeController
{
[CommunicationKeyValidation]
public ActionResult Index()
{
// do stuff
}
konu CommunicationKeyValidationFilter
üzerinde yapıcı sadece ilk talep üzerine çağrılan olmasıdır. Filtreyi çözme girişiminde her seferinde bu filtreyi oluşturmak için neden açabileceğim bir yol var mı?
: (? böcek) bu yüzden bu özellik kaynaklanır web.api içinde Ninject bir hata söyleyebilirim . Öyle görünüyor Web.Api kendisi filtreleri önbelleğe: Ben [AutoFac web.api entegrasyonu] bunu buldum (https://code.google.com/p/autofac/wiki/WebApiIntegration): "MVC filtre sağlayıcının aksine Web API'sındaki bir örnek, filtre örneklerinin önbelleğe alınmaması gerektiğini belirtmenize izin vermez.Bu, Web API'sındaki tüm ** filtre özniteliklerinin, uygulamanın tüm ömrü boyunca var olan etkin tekil örneklerdir. ** " – nemesv
Evet, Aynı makaleyi okuduğuma inanıyorum. Herkes her isteği sırasında yeni bir örneğini oluşturur özel bir filtre sağlayıcı falan yazarak bu ele olsaydı merak ettim. –
İlginç bir şekilde Ninject, Web.API ... – nemesv