我在我的 ASP.NET MVC3 应用程序中使用支持 AJAX 的 Web 服务,我想向其中注入(inject)一些类。所以我安装了 NInject.Wcf,将工厂设置为 Ninject.Extensions.Wcf.NinjectServiceHostFactory
下一步是从 NinjectWcfApplication 派生应用程序类(Global.asax 中的
,但是当我这样做时,IIS 停止运行我的应用程序,它尝试使用 StaticFile 模块而不是将请求路由到 Controller 。MVCApplication
)
如何解决这个问题或如何以其他方式使用 WCF 实现 NInject?
最佳答案
我终于弄明白了,路由没有正确设置的原因是因为 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
方法。
关于asp.net-mvc - 在 ASP.NET MVC3 中使用 Ninject.Wcf。从 NinjectWcfApplication 派生禁用应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9634317/