当我使用Roles对象时,我收到错误#34;无法找到存储过程' dbo.aspnet_CheckSchemaVersion'"

时间:2014-10-17 16:04:15

标签: azure asp.net-mvc-5 roleprovider

所以,我一直在互联网上寻找解决方案。我做了很多研究,只让我失去了更多。我正在为Azure创建一个MVC 5站点,但我在设置角色管理时遇到了问题。

当我使用Roles对象时,我收到错误“无法找到存储过程'dbo.aspnet_CheckSchemaVersion'”我找到了this链接,但我不知道它将如何应用于Azure。

我的web.config文件目前设置如下。

<add name="RoleDB" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Techdb3.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />

    <roleManager enabled="true">
  <providers>
    <clear/>
    <add connectionStringName="RoleDB"
     name="AspNetSqlRoleProvider"
     type="System.Web.Security.SqlRoleProvider"
     applicationName="TechAndGames" />
  </providers>
</roleManager>

1 个答案:

答案 0 :(得分:3)

对于MVC 5,我认为您需要删除roleManager标记。我在我最新的MVC 5应用程序中使用了<roleManager>,并且得到了与您完全相同的错误。一旦我删除它,错误就消失了。我认为这是因为MVC使用了不同的角色管理方法。

其他一些事项:确保在数据库中设置了正确的表格。这些是您需要的表格:

  • _MigrationHistory
  • AspNetRoles
  • AspNetUserClaims
  • AspNetUserLogins
  • AspNetUserRoles
  • AspNetUsers

根据您的工作情况,您可能不需要所有这些。为了正确地进行这些设置,我(1)使用MVC 5模板创建了一个新项目,(2)在本地运行项目(3)完成了网站上新用户的注册过程,(4)查看了我的本地SQL服务器(LocalDb)\ v11.0,它创建了一个数据库,上面提到了我提到的所有表。然后,我将这些表编写成脚本,并针对我的真实数据库运行脚本。

然后,在您的应用中,您应该可以致电User并访问User.IsInRole("someRole");等方法。