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



我有一个使用ASP.NET Identity(Invidual用户帐户)的MVC 5项目。作为数据库ORM,我使用的是实体框架6,IoC由Ninject负责。

解决方案结构遵循

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

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

找不到存储过程"dbo.aspnet_CheckSchemaVersion"。

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

所以我在web.config中添加了Rolemanagers clear。这导致了

配置错误描述:在处理为该请求提供服务所需的配置文件。请查看下面的具体错误详细信息,并修改您的配置文件。

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

来源错误:

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

源文件:…myproject\WebUI\web.config线路:55

这是怎么回事?如何将默认角色提供程序设置为使用ASP.NET标识?

所以在我发布问题后,我就找到了答案。我不得不添加

<system.webServer><模块>。。。<remove name="RoleManager"/><模块><system.webServer>

的确如此,但为什么呢?

相关内容

  • 没有找到相关文章

最新更新