我正在使用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 Server数据库
为什么会出现此错误?是否有任何我缺少的配置需要设置?
提前致谢
答案 0 :(得分:1)
尝试设置默认角色管理器提供程序,如下所示:
<roleManager defaultProvider="DefaultRoleProvider" enabled="true">
<providers>
...
</providers>
</roleManager>
您可以稍后根据需要添加自定义提供商...
您还必须设置数据库以启用成员资格和角色提供程序。您必须为成员资格设置数据库:
如果您没有数据库,可以设置localy:
<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>
甚至更好: