所以,我一直在互联网上寻找解决方案。我做了很多研究,只让我失去了更多。我正在为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>
答案 0 :(得分:3)
对于MVC 5,我认为您需要删除roleManager
标记。我在我最新的MVC 5应用程序中使用了<roleManager>
,并且得到了与您完全相同的错误。一旦我删除它,错误就消失了。我认为这是因为MVC使用了不同的角色管理方法。
其他一些事项:确保在数据库中设置了正确的表格。这些是您需要的表格:
根据您的工作情况,您可能不需要所有这些。为了正确地进行这些设置,我(1)使用MVC 5模板创建了一个新项目,(2)在本地运行项目(3)完成了网站上新用户的注册过程,(4)查看了我的本地SQL服务器(LocalDb)\ v11.0,它创建了一个数据库,上面提到了我提到的所有表。然后,我将这些表编写成脚本,并针对我的真实数据库运行脚本。
然后,在您的应用中,您应该可以致电User
并访问User.IsInRole("someRole");
等方法。