簡體   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