0

I'm working with MVC 5 and I have the following code in my View:

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

At the begining, when I ran my web site I got a error message saying that the RoleManager feature was not enable. So, I enable it in the web config.

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

After that the error disappeared. However, now I'm getting another one:

Unable to connect to SQL Server database

Why this error is appearing? Is there any configuration that I missing and needs to be set up?

Thanks in advance

MikePR
  • 2,786
  • 5
  • 31
  • 64

1 Answers1

1

Try setting your default role manager provider like this:

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

You can later add your custom providers as you like...

You must also set your DB to enable membership and role providers. You must set DB for membership:

If you don't have your database you can set something localy:

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

and then set membership:

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

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

Or even better:

Read this How To: Use Role Manager

freshbm
  • 5,540
  • 5
  • 46
  • 75
  • Hi @freshbm, I tried the code above and the commented error doesn't appear. However, I'm getting a different one: Could not load file or assembly 'System.Web.Provider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified. I'm trying to see if a dll should be added. – MikePR Mar 25 '15 at 16:12
  • In nuget: Install-Package Microsoft.AspNet.Providers.Core – freshbm Mar 25 '15 at 16:21