2010-06-29 105 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