Внедрение репозитория в поставщика пользовательских ролей дает мне доступ к DataContext после ошибки Dispose - PullRequest
1 голос
/ 31 декабря 2010

В настоящее время я создаю приложение ASP.NET MVC и хочу использовать атрибут authorize с ролями, не используя поставщика по умолчанию и все его таблицы, которые автоматически создаются.

Я решил создать свой собственный поставщик ролей (мой класс наследуется от RoleProvider) и реализовать только один метод:

public override string[] GetRolesForUser(string username)
{
    Account account = accountRepository.FindByUserName(username);

    string[] role = new string[] { account.Role };

    return role;
}

Мой контроллер выглядит так:

[Authorize(Roles = "Administrator")]
public ActionResult Index()
{
    return View();
}

Я использую Unity для добавления хранилища в мой класс провайдера пользовательских ролей, который прекрасно работает, но когда вызывается FindByUserName (имя пользователя), я получаю следующую ошибку:

Невозможно получить доступ к удаленному объекту. Имя объекта: 'DataContext, доступ к которому осуществляется после удаления.'.

По какой-то причине Linq2Sql не нравится то, что происходит, и я немного растерялся. Любое понимание было бы чрезвычайно полезно. Кроме того, если кому-то удалось сделать то, что я пытаюсь сделать, без использования какого-либо поставщика ролей, пожалуйста, дайте мне знать. В таблице учетных записей в моей базе данных есть столбец role (int), а в моем коде есть перечисление с моими ролями.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...