繁体   English   中英

将Ninject v2与Asp.net Webforms集成的问题

[英]Problem Integrating Ninject v2 with Asp.net Webforms

我正在尝试将Ninject v2与我的asp.net webforms项目集成。 我正在运行.NET Framework 4.0。

我的global.asax继承自Ninject.Web.NinjectHttpApplication。 我还添加了CreateKernel方法:

protected override IKernel CreateKernel()
{
  IKernel kernel = new StandardKernel();
  kernel.Bind<IUser>().To<User>();
  return kernel;
}

我的所有页面都继承自Ninject.Web.PageBase。 我还在web.config中添加了以下httpmodule条目:

<add name="NinjectHttpModule" type="Ninject.Web.NinjectHttpModule, Ninject.Web">

但是,当我运行该应用程序时,会触发InvalidOperationException以及以下内容:

“ASP.login_aspx类型请求注入,但没有为Web应用程序注册内核。请确保您的项目定义了NinjectHttpApplication。”

我究竟做错了什么?

亲切的问候

背风处

我在ASP.NET 4.0 Webforms应用程序中遇到了同样的错误。 我通过使用带有代码的唯一'Global.asax'文件来修复它,而不是后面的'Global.asax'+'Global.asax.cs'代码。 例如,您可以使用此独立的“Global.asax”文件:

<%@ Application Language="C#" Inherits="Ninject.Web.NinjectHttpApplication" %>
<%@ Import Namespace="Ninject" %>

<script runat="server">
    protected override IKernel CreateKernel() {
        var kernel = new StandardKernel();
        kernel.Bind<IUser>().To<User>();
        return kernel;
    }
</script>

此外,我从未向web.config添加任何httpmodules,它工作得很好!

创建新的Web应用程序时,Global.asax.cs文件将填充空方法:

    void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup
    }

NinjectHttpApplication也实现了这些方法,但生成的Global.asax.cs中的空方法从不调用NinjectHttpApplication上的方法。 要解决此问题,请删除空方法或添加对基本方法的调用:

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

我的情况有点不同 - 我想与你们在这里分享 - 在IIS 7下进行测试然后将其部署在IIS 6的Production Server上。

得到了相同的错误消息' ..但是没有为Web应用程序注册内核...请确保您的项目定义了NinjectHttpApplication。

尝试了所有上述解决方案 - 没有成功。 发现Global.asax.cs中的事件被忽略了。

为了解决这个问题,我删除了PrecompiledApp.config文件 - 可能还需要回收。

干杯。

我相信你还需要注册HttpApplicationInitializationModule

<add name="HttpApplicationInitializationModule" type="Ninject.Web.Common.HttpApplicationInitializationModule, Ninject.Web.Common"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM