在MVC 5项目上使用ASP.NET标识,但httpcontext User.ProviderName是"AspNetSqlRoleProvider"

Vil*_*ili 4 entity-framework ninject asp.net-mvc-5 asp.net-identity

我有一个使用ASP.NET身份(Invidual用户帐户)的MVC 5项目.作为数据库ORM,我正在使用实体框架6和IoC由Ninject处理.

解决方案结构如下

  • MVC项目 - 有我的控制器,视图和ninject设置.对于Ninject,我从nuget获得了Ninject.MVC3.
  • 数据项目---有我的DataContext(IdentityDbContext)和我的ApplicationUser(IdentityUser).我的数据服务和所有存储库
  • 核心项目 - 拥有我的所有实体和接口

[Authorize]属性工作正常,我必须登录才能访问带注释的动作,但是当我设置时 [Authorize(Roles = "Admin")]我得到了

找不到存储过程'dbo.aspnet_CheckSchemaVersion'.

我创建了我的CustomAuthorize attibute,它基本上是Authorize的副本,并注意到User.ProviderName中的protected virtual bool AuthorizeCore(HttpContextBase httpContext)httpcontext是"AspNetSqlRoleProvider".

所以我在我的web.config中添加了Rolemanages clear.这导致了

配置错误说明:处理为此请求提供服务所需的配置文件时发生错误.请查看下面的具体错误详细信息并相应地修改配置文件.

分析器错误消息:找不到默认角色提供程序.

来源错误:

第53行: - >第54行:第55行:第56行:第57行:

源文件:... myproject\WebUI\web.config行:55

那么这笔交易是什么?如何设置默认角色提供程序以使用ASP.NET标识?

Vil*_*ili 17

所以在我发布问题之后我就找到了答案.我不得不补充一下

 <system.webServer>
    <modules>
...
      <remove name="RoleManager" />
    </modules>
  </system.webServer>

这样做了.但是还有一个问题是为什么?