2010-06-29 116 views
7

我想在一個結合ASP.Net webforms和ASP.Net MVC的項目中使用Ninject。我使用的是Ninject 2,但是當我使用Ninject.Web.Mvc中的NinjectHttpApplication時,它會抱怨當我使用諸如PageBase之類的內容時,內核不會被創建。Ninject with ASP.Net webforms和MVC

我在Global.asax中有以下內容,我不確定要添加什麼。

public class MvcApplication : Ninject.Web.Mvc.NinjectHttpApplication 
{ 
    protected override void OnApplicationStarted() 
    { 
     AreaRegistration.RegisterAllAreas(); 
     RegisterRoutes(RouteTable.Routes); 
     RegisterAllControllersIn(Assembly.GetExecutingAssembly()); 
    } 

    protected override Ninject.IKernel CreateKernel() 
    { 
     return new StandardKernel(new ServiceModule()); 
    } 
} 

有人有這個工作的地方可以分享一些想法或代碼嗎?

回答

2

正如魯本說,我已經提出了一個消息Ninject郵件列表:

http://groups.google.com/group/ninject/browse_thread/thread/317fc48387399aa6

總之答案是,它不幸ISN真的不可能。然而,隨着定製PageBase類,你可以讓屬性和方法注入可能性(內特Kohari的在Ninject郵件列表的答案):

public abstract class PageBase : Page 
{ 
    public IKernel Kernel { get; private set; } 
    public PageBase() { Kernel = ...; } 
    public void Page_Init() { Kernel.Inject(this); } 
} 
1

1)在源兩者的MVC和非MVC的Ninject擴展一看 - 代碼很短而整齊

2)進入ninject郵件列表,並問這個問題,一起是什麼你從源頭上學到了東西。將會有一個答案或補丁減輕快速

+0

感謝您的回覆。我已經做了1,並試圖將兩個HttpApplications合併爲一個。但這並不「感覺正確」。我在Ninject郵件列表中發佈了一條消息,當我收到有用的回覆時,會通知您。 – 2010-07-02 06:20:11