Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有Sqlite设置的Ninject MVC3 ASP.NET CustomMembershipService_Sqlite_Asp.net Mvc 3_Asp.net Membership_Ninject_Membership Provider - Fatal编程技术网

带有Sqlite设置的Ninject MVC3 ASP.NET CustomMembershipService

带有Sqlite设置的Ninject MVC3 ASP.NET CustomMembershipService,sqlite,asp.net-mvc-3,asp.net-membership,ninject,membership-provider,Sqlite,Asp.net Mvc 3,Asp.net Membership,Ninject,Membership Provider,我在配置自定义文件时遇到问题 绑定模块时,我在应用程序启动时收到一条恼人的消息,如下所示: this.Bind<RoleProvider>() .ToConstant(Roles.Providers["SQLiteRoleProvider"]); this.Bind<MembershipProvider>() .ToConstant(Membership.Providers["SQLiteMembershipProvider"]); This metho

我在配置自定义文件时遇到问题

绑定模块时,我在应用程序启动时收到一条恼人的消息,如下所示:

this.Bind<RoleProvider>()
    .ToConstant(Roles.Providers["SQLiteRoleProvider"]);
this.Bind<MembershipProvider>()
    .ToConstant(Membership.Providers["SQLiteMembershipProvider"]);

This method cannot be called during the application's pre-start initialization stage.
At 
>System.Web.dll!System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() 
in {System.Web.Compilation.BuildManager}   System.Web.Compilation.BuildManager
this.Bind()
.ToConstant(Roles.Providers[“SQLiteRoleProvider]”);
this.Bind()
.ToConstant(Membership.Providers[“SQLItemMembershipProvider”]);
在应用程序的预启动初始化阶段无法调用此方法。
在
>System.Web.dll!System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()
在{System.Web.Compilation.BuildManager}System.Web.Compilation.BuildManager中
我查了很多博客,问了很多问题

也没有成功


以前有人遇到过这个错误消息吗?

我也遇到了很大的问题。与Ninject不兼容的提供者。我一直没弄明白。我决定让它固定而不是注射。我将所有内容抽象为一个服务,并针对这个服务类进行了Ninject绑定。我最终得到了一个使用实体框架成员资格提供程序硬编码的服务,如果我需要另一个提供程序,我必须实现另一个使用该提供程序硬编码的服务

使用简单的服务类进行注入可以工作,但使用
ToConstant()
直接绑定到提供程序时无法工作

    public class AccountMembershipService : IMembershipService
    {
        private readonly MembershipProvider _provider;
        private readonly IAccountRepository _accountRepository;
        private readonly IFirmsRepository _firmsRepository;
        private readonly IRepository<Client> _clientsRepository;

        public AccountMembershipService(IAccountRepository accountRepository, IFirmsRepository firmRepository,
                                        IRepository<Client> clientsRepository)
        {
            _provider = System.Web.Security.Membership.Providers["EfMembershipProvider"];
            _accountRepository = accountRepository;
            _firmsRepository = firmRepository;
            _clientsRepository = clientsRepository;
        }
...
公共类AccountMembershipService:IMembershipService
{
私有只读成员资格提供商_提供商;
私有只读IAccountRepository\u accountRepository;
私人只读IFirmsRepository\u firmsRepository;
私人只读IRepository(u clients repository);;
public AccountMembership服务(IAccountRepository accountRepository、IFirmsRespository firmRepository、,
i潜在客户(潜在客户)
{
_provider=System.Web.Security.Membership.Providers[“EfMembershipProvider”];
_accountRepository=accountRepository;
_firmsRepository=firmsRepository;
_clientsRepository=clientsRepository;
}
...
global.asax.cs

Bind<IFormsAuthenticationService>().To<FormsAuthenticationService>();
Bind<IMembershipService>().To<AccountMembershipService>();
Bind<IAccountRepository>().To<EntityFrameworkAccountProvider>();
// never worked
//Bind<MembershipProvider>().ToConstant(System.Web.Security.Membership.Providers["EfMembershipProvider"]);
Bind().To();
绑定()到();
绑定()到();
//没用
//Bind().ToConstant(System.Web.Security.Membership.Providers[“EfMembershipProvider”]);

更改绑定代码将解决此问题

this.Bind<RoleProvider>().ToProvider<SQLiteRoleProvider>();
this.Bind<MembershipProvider>().ToProvider<SQLiteMembershipProvider>();
this.Bind().ToProvider();
this.Bind().ToProvider();
只需使
SQLiteMembershipProvider
SQLiteRoleProvider
实现
IProvider


如果您推迟初始化,它就会恢复正常。

堆栈跟踪和相关代码是什么?我已经包括了有用的部分,但我也添加了Ninject部分。如何推迟初始化?通过将其绑定到提供程序。