【问题标题】:When I use the Roles object I get an error of "Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'"当我使用 Roles 对象时,出现“找不到存储过程 'dbo.aspnet_CheckSchemaVersion'”的错误
【发布时间】:2014-10-17 16:04:14
【问题描述】:

所以,我一直在互联网上寻找解决方案。我做了很多研究,但这只让我更加迷茫。我正在为 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>

【问题讨论】:

  • 你使用网站,还是网络角色?!你是如何初始化这个数据库(techdb3)的?
  • 我相信我可能不知道与网站相比,Web 角色是什么。数据库首先是代码,我只是将它指向我的 Azure MS SQL 服务器。

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


【解决方案1】:

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

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

  • _MigrationHistory
  • AspNetRoles
  • AspNetUserClaims
  • AspNetUserLogins
  • AspNetUserRoles
  • AspNet 用户

您可能不需要所有这些,具体取决于您在做什么。为了正确进行这些设置,我 (1) 使用 MVC 5 模板创建了一个新项目,(2) 在本地运行该项目 (3) 在站点上完成了新用户的注册过程,并且 (4) 在我的本地查看SQL server (LocalDb)\v11.0 并且它在那里创建了一个包含我上面提到的所有表的数据库。然后我编写了这些表的脚本并针对我的真实数据库运行脚本。

然后,在您的应用程序中,您应该能够调用 User 并访问像 User.IsInRole("someRole"); 这样的方法。

【讨论】:

  • 我相信这正是我的问题,我忘了更新我的发现。是的,如果您在配置中保留 标记,我相信服务器会尝试恢复到旧版本的“roleManger”,该版本过去需要调用才能创建所有必要的表。
  • 很高兴听到你想通了 :-)
  • 我知道这是旧的,但在尝试让我的 MVC 5 Identity 项目在第 3 方托管服务器上运行几天的挫折之后,它才救了我。
猜你喜欢
  • 1970-01-01
  • 2011-01-11
  • 1970-01-01
  • 2011-07-10
  • 1970-01-01
  • 2014-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多