Ошибка IsUserInRole с SimpleMembership

Я использую эти коды для авторизации ролей в своем интернет-приложении ASP.NET MVC 4.

@if (Roles.IsUserInRole("RolunAdi"))

{
    <a href="#">Test</a>
}

Работает нормально, но иногда вылетает ошибка.. Именно на этом изображении..

http://forum.yazgelistir.com/JS/HTMLEditor/Image.aspx?id=593&siteid=0

У меня на уме 2 вещи.. Во-первых;

У меня есть две строки подключения в web.config.. Первая для модели данных Entity Framework, вторая для SimpleMembership.. (Кстати, что я могу сделать для использования только одной строки подключения??)

http://forum.yazgelistir.com/JS/HTMLEditor/Image.aspx?id=594&siteid=0

Второй;

Я создаю интернет-приложение ASP.NET MVC 4. После того, как мне нужно что-то установить для использования роли ASP.NET SimpleMembership..


person yusuf    schedule 18.02.2013    source источник
comment
Есть ли причина использовать два разных con-str? Почему вы используете одну и ту же БД?   -  person AliRıza Adıyahşi    schedule 18.02.2013


Ответы (2)


У вас есть раздел system.web в web.config....

<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
  <providers>
    <clear/>
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
  </providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
  <providers>
    <clear/>
    <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
  </providers>
</membership>

Примечание: мои роли смотрят на DefaultConnection

<connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=MyDB;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\MyDB.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>

Кажется, это также упоминается здесь аутентификация на основе нового Интернет-шаблона MVC 4 с использованием простого членства

person devpascoe    schedule 19.02.2013

Моя проблема связана с InitializeSimpleMembership, потому что все мои страницы требуют входа в систему.

Обычно он есть в классе AccountController;

[Authorize]
[InitializeSimpleMembership]
public class AccountController : Controller
{
    ....

Нам нужен InitializeSimpleMembership для всего нашего проекта. Итак, мы создаем статический класс в папке App_Start: Exp;

InitializeSimpleMembershipProviderConfig.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using WebMatrix.WebData;

namespace OsosPlus2.UI
{
    public class InitializeSimpleMembershipProviderConfig
    {
        public static void InitializeSimpleMembershipDbConnection()
        {
            if (!WebSecurity.Initialized)
            {
                WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
            }
        }
    }
}

После того, как мы создали класс, мы записываем этот код в Global.asax;

InitializeSimpleMembershipProviderConfig.InitializeSimpleMembershipDbConnection();

Мы должны удалить эту строку в папке «Фильтры».

WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);

Этот ответ переведен из ответа AliRıza Adıyahşi из yazgelistir.com

СПАСИБО ЗА ПОМОЩЬ АлиРиза Адияши

person yusuf    schedule 21.02.2013