0

Je travaille avec MVC 5 et j'ai le code suivant à mon avis:erreur en utilisant Roles.IsUserInRole dans Razor

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

Au début, quand je courais mon site web, je reçu un message d'erreur disant que la fonctionnalité RoleManager n'a pas été activée. Donc, je l'ai activé dans la configuration web.

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

Après cela, l'erreur a disparu. Cependant, maintenant je reçois un autre:

Impossible de se connecter à la base de données SQL Server

Pourquoi cette erreur apparaît? Y a-t-il une configuration qui me manque et qui doit être configurée?

Merci à l'avance

+0

Pouvez-vous fournir votre configuration Web? –

Répondre

1

essayez de paramétrer votre rôle par défaut fournisseur de gestionnaire comme ceci:

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

Vous pouvez ensuite ajouter vos fournisseurs personnalisés que vous aimez ...

Vous devez également définir votre DB pour activer les membres et les fournisseurs de rôles. Vous devez définir DB pour l'adhésion:

Si vous ne disposez pas de votre base de données que vous pouvez définir quelque chose localy:

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

puis définissez l'adhésion:

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

et enfin 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> 

Ou mieux encore:

Lisez ceciHow To: Use Role Manager

+0

Salut @freshbm, j'ai essayé le code ci-dessus et l'erreur commentée n'apparaît pas. Cependant, j'en obtiens un autre: Impossible de charger le fichier ou l'assembly 'System.Web.Provider, Version = 1.0.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089' ou l'une de ses dépendances. Le système ne peut pas trouver le fichier spécifié. J'essaye de voir si une DLL devrait être ajoutée. – MikePR

+0

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

+0

Merci pour l'aide. Maintenant, ça marche – MikePR