2015-11-07 24 views

回答

7

您可能會收到此錯誤的原因有多種。這不是一個有保證的解決方法,但希望它能爲那裏的人節省一些時間。出現此錯誤通常是因爲您的應用程序正在使用默認的DbContext,而不是您打算使用的那個。

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext() : base("DefaultConnection") {} 
} 

該項目生成此自定義DbContext。您應該確保「DefaultConnection」是使用此類的項目的Web.config中的連接字符串或連接的名稱。

這是我的連接字符串。請注意,名稱是一樣的一個在上面的DbContext:

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-AspnetIdentitySample-10_8_3;Integrated Security=True" providerName="System.Data.SqlClient" /> 

一旦你確信你的連接字符串建立,我們需要檢查綁定在NinjectWebCommon。

kernel.Bind<ApplicationDbContext>().ToSelf(); 
kernel.Bind<IUserStore<ApplicationUser>>().To<UserStore<ApplicationUser>>().WithConstructorArgument("context", kernel.Get<ApplicationDbContext>()); 
kernel.Bind<UserManager<ApplicationUser>>().ToSelf(); 

這是我在我的應用程序中發現錯誤的地方。第一行不是必需的,但是一個好主意。第二條線是最重要的。

UserStore有2個構造函數。第一個是空的。第二個參數是1,DbContext上下文。 Ninject的構造函數參數區分大小寫,必須命名爲「上下文」,以便Ninject正確選擇此構造函數。

+0

Ninject綁定爲我節省了數天的調試時間。謝謝! – arnaudoff

+0

感謝您發佈此消息,我很遺憾在調試之前需要花費數小時的時間進行調試。 – J3RM

相關問題