Получил следующее ProviderException :
Функция Role Manager не была включена.
Все идет нормально.
Есть ли где-нибудь метод, который можно вызвать, чтобы проверить, был ли включен Role Manager или нет?
c#
asp.net
roleprovider
gsharp
источник
источник
web.config
? Я попытался вставить это,Application_Start
и это говоритThis method can only be called during the application's pre-start initialization phase.
roleManager
включен. Но сейчас я получаю исключениеUnable to connect to SQL Server database
Если вы попали сюда, потому что используете новое
ASP.NET
Identity
UserManager
, то, что вы на самом деле ищете, этоRoleManager
:roleManager
даст вам доступ, чтобы увидеть, существует ли роль, создать и т. д., плюс она создана дляUserManager
источник
В другом месте через Google я нашел 2 предложения, в которых предлагалось: а) убедиться, что ваша строка соединения с БД (та, которую использует Роли) правильная, и что ключ к ней написан правильно, и б) что флаг Enabled на RoleManager установлен в true. Надеюсь, что один из тех помогает. Это для меня.
Вы пытались проверить Roles.Enabled? Кроме того, вы можете проверить Roles.Provider, чтобы увидеть, сколько поставщиков доступно, и вы можете проверить Roles.Provider для поставщика по умолчанию. Если это ноль, то нет ни одного.
источник
Я нашел этот вопрос из-за исключения, упомянутого в нем. В моем Web.Config не было
<roleManager>
тега. Я понял, что даже если я добавлю его (как предложил Infotekka ), он окажется в исключении базы данных. После следования предложениям в других ответах здесь ни один полностью не решил проблему.Так как эти теги Web.Config могут быть сгенерированы автоматически, было бы неправильно решить их, добавив их вручную. Если вы находитесь в аналогичном случае, отмените все изменения, внесенные в Web.Config и в Visual Studio:
Проверьте свой Web.config, и теперь у вас должен быть хотя бы один
<providers>
тег внутри тегов Profile , Membership , SessionState, а также внутри нового тега RoleManager , например:Добавить
enabled="true"
вот так:Нажмите F6Build, и теперь все должно быть в порядке, чтобы перейти к обновлению базы данных без этого исключения:
update-database -verbose
и метод Seed будут работать очень хорошо (если вы ни разу не перепутали) и создадут несколько таблиц в вашей базе данных;источник
Если вы используете,
ASP.NET Identity UserManager
вы можете получить это так:Если вы изменили ключ для пользователя с Guid на Int, например, используйте этот код:
источник
источник
Вот код, который вам нужно вставить в свой Account Controller в MVC5 и более поздних версиях, чтобы получить список ролей пользователя:
csharp public async Task<ActionResult> RoleAdd(string UserID) { return View(await UserManager.GetRolesAsync(UserID)).OrderBy(s => s).ToList()); }
Нет необходимости использовать
Roles.GetRolesForUser()
и включать функцию Role Manager.источник