0

Я работаю с MVC 5 и у меня есть следующий код на мой взгляд:Ошибка при помощи Roles.IsUserInRole в бритве

@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> 

Вы можете позже добавить свои собственные поставщики, как вам нравится ...

Вы также должны установить ваш БД, чтобы включить поставщиков членства и роли. Вы должны установить базу данных для членства:

Если у вас нет базы данных вы можете установить что-то:, локальной

<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

+0

Привет @freshbm, я пробовал код выше, и прокомментированная ошибка не появляется. Тем не менее, я получаю другое: не удалось загрузить файл или сборку «System.Web.Provider, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089» или одну из его зависимостей. Система не может найти указанный файл. Я пытаюсь посмотреть, нужно ли добавить dll. – MikePR

+0

В nuget: Install-Package Microsoft.AspNet.Providers.Core – freshbm

+0

Спасибо за помощь. Теперь он работает – MikePR