3

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

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

4

1 回答 1

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方法。

于 2012-03-11T14:40:00.160 回答