我在ASP.NET MVC3应用程序中使用支持AJAX的Web服务,我想向它们注入一些类。所以我安装了NInject.Wcf,将factory设置为Ninject.Extensions.Wcf.NinjectServiceHostFactory
,下一步是从MVCApplication
派生应用程序类(Global.asax中的NinjectWcfApplication
),但是当我这样做时,IIS停止了运行我的应用程序,它尝试使用StaticFile模块,而不是将请求路由到控制器。
如何修复此问题或如何以其他方式使用WCF实现NInject?
答案 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
方法。