在ASP.NET MVC3中使用Ninject.Wcf。从NinjectWcfApplication派生禁用应用程序

时间:2012-03-09 12:49:02

标签: asp.net-mvc asp.net-mvc-3 iis ninject ninject-extensions

我在ASP.NET MVC3应用程序中使用支持AJAX的Web服务,我想向它们注入一些类。所以我安装了NInject.Wcf,将factory设置为Ninject.Extensions.Wcf.NinjectServiceHostFactory,下一步是从MVCApplication派生应用程序类(Global.asax中的NinjectWcfApplication),但是当我这样做时,IIS停止了运行我的应用程序,它尝试使用StaticFile模块,而不是将请求路由到控制器。

如何修复此问题或如何以其他方式使用WCF实现NInject?

1 个答案:

答案 0 :(得分:2)

我终于弄明白了,路由未正确设置的原因是因为ASP.NET MVC应用程序的默认Global.asax模板,默认情况下它定义了

void Application_Start() { ... }

由于HttpApplication没有定义此方法,IIS在启动时调用此方法。因此,当从NinjectWcfApplication派生具有定义的Application_Start方法时,我们需要将默认方法更改为:

protected override void Application_Start(object sender, EventArgs e)
{
    .....
    base.Application_Start(sender, e);
}

如果我们不这样做,IIS会调用NinjectWcfApplication.Application_Start而不是我们的Application_Start方法。