在 Razor 中使用 Roles.IsUserInRole 时出错

Error using Roles.IsUserInRole in Razor

我正在使用 MVC 5,我的视图中有以下代码:

 @if (Roles.IsUserInRole("admin"))
        {
            <li class="@Html.IsSelected(controller: "Vacants")">
                <a href="#"><i class="fa fa-edit"></i> <span class="nav-label">Vacants</span><span class="fa arrow"></span></a>
                <ul class="nav nav-second-level">
                    <li class="@Html.IsSelected(action: "Create")"><a href="@Url.Action("Create", "Vacants")">Create New Vacatns</a></li>
                    <li class="@Html.IsSelected(action: "Morris")"><a href="@Url.Action("Edit", "Vacants")">Edit Vacant</a></li>
                    <li class="@Html.IsSelected(action: "Rickshaw")"><a href="@Url.Action("Delete", "Vacants")">Delete Vacant</a></li>
                    <li class="@Html.IsSelected(action: "Chartjs")"><a href="@Url.Action("History", "Vacants")">History</a></li>
                </ul>
            </li>
        }

一开始,当我 运行 我的网站时,我收到一条错误消息,指出 RoleManager 功能未启用.所以,我在网络配置中启用它。

<system.web>
. . .
   <roleManager enabled="true" />
</system.web>

之后错误消失了。但是,现在我又得到了一个:

无法连接到 SQL 服务器数据库

为什么会出现这个错误?是否有任何我遗漏并需要设置的配置?

提前致谢

尝试像这样设置您的默认角色管理器提供程序:

<roleManager defaultProvider="DefaultRoleProvider" enabled="true">
  <providers>
    ...
  </providers>
</roleManager>

您以后可以根据需要添加自定义提供程序...

您还必须设置数据库以启用成员资格和角色提供者。您必须为会员设置数据库:

如果您没有数据库,您可以在本地设置一些东西:

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

然后设置成员资格:

<membership>
  <providers>
    <add connectionStringName="DefaultConnection" enablePasswordRetrieval="false"
      enablePasswordReset="true" requiresQuestionAndAnswer="false"
      requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6"
      minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
      applicationName="/" name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
</membership>

最后是 roleProvider:

<roleManager defaultProvider="DefaultRoleProvider" enabled="true">
      <providers>
        <add connectionStringName="DefaultConnection" applicationName="/" name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
      </providers>
    </roleManager>

甚至更好:

阅读本文 How To: Use Role Manager