0 / 0 / 0
Регистрация: 30.07.2020
Сообщений: 27
|
|||||||||||||||||||||||||||
Управление ролями пользователей с помощью Identity в ASP.NET CORE MVC04.11.2023, 15:19. Показов 2397. Ответов 20
Метки нет Все метки)
(
Я изучаю как работает Identyity в C# MVC и опираюсь на книгу "Фриман А. - ASP.NET Core MVC 2 с примерами на C# для профессионалов - 2019", то есть беру примеры из этой книги и переписываю в своё приложение.
В главе 29 описывается аутентификация пользователей, у меня проблема с функционалом управления ролями (стр. 922 этой книги). При переходе по адресу https://localhost:7174/RoleAdmin вылетает ошибка SQL, сообщающая что я пытаюсь выполнить одновременно два запроса одновременно через один контекст:
Мой код контроллера Controllers/RoleAdminController.cs выглядит следующим образом:
0
|
04.11.2023, 15:19 | |
Ответы с готовыми решениями:
20
Проблема с ролями в Asp net Identity Разница между ASP.NET Core 2, ASP.NET Core MVC, ASP.NET MVC 5 и ASP.NET WEBAPI 2 Где находится контроллер регистрации в стандартном шаблоне Visual Studio asp net core mvc + identity |
0 / 0 / 0
Регистрация: 30.07.2020
Сообщений: 27
|
|||||||||||||
04.11.2023, 17:44 [ТС] | |||||||||||||
![]() Index.cshtml для RoleAdminController.cs, относящийся к сабжу выглядит так:
0
|
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
|
|||||||
04.11.2023, 18:54 | |||||||
IamRain, как мы уже выяснили
проверку на контекст мы никуда не убирали поэтому и любовь мне лично не мешает
1
|
![]() 4624 / 2640 / 727
Регистрация: 02.08.2011
Сообщений: 7,086
|
||
04.11.2023, 19:04 | ||
Восстановление контекста (переключение контекста физического потока) - уже прилично дольше (не замерял) - целевое применение СonfigureAwait(false). А выполнение кода на ThreadPool-е с наличием ConfigureAwait(false) говорит о том, что человек так них*ра и не понял, для чего это нужно на самом деле.
1
|
![]() 4624 / 2640 / 727
Регистрация: 02.08.2011
Сообщений: 7,086
|
|
04.11.2023, 19:19 | |
kradun, попробуйте модель явно в виде List<IdentityRole> обозначить.
И в теле разметки можно вместо Count() использовать просто свойство Count. Не совсем понятно, почему у вас наблюдается эта проблема, честно говоря.
1
|
0 / 0 / 0
Регистрация: 30.07.2020
Сообщений: 27
|
|||||||||||||
04.11.2023, 19:31 [ТС] | |||||||||||||
Происходит вообще что то странное, если написать без await:
0
|
0 / 0 / 0
Регистрация: 30.07.2020
Сообщений: 27
|
||
04.11.2023, 19:53 [ТС] | ||
Проект в папке /server База данных - PostgreSQL 16.0, в подпапке /database лежит бэкап сервера
0
|
![]() 4624 / 2640 / 727
Регистрация: 02.08.2011
Сообщений: 7,086
|
|
04.11.2023, 20:52 | |
По-хорошему, ваше приложение должно само запускать миграции (создавать схему, сидировать базу).
Это делается при старте приложения, чтобы остальным разработчикам было легче запускать приложение, не занимаясь возней с базой.
0
|
0 / 0 / 0
Регистрация: 30.07.2020
Сообщений: 27
|
|||
04.11.2023, 21:09 [ТС] | |||
У меня в БД есть 3 пользователя, которых можно создать перейдя по адресу /Admin и 3 роли До того как написать на форум ошибка воспроизводилась когда я закомментировал весь код в файле Infrastructure/RoleUsersTagHelper.cs и кликал по кнопке Edit Role Возможно у вас появится ошибка если вы тоже создадите пользователей и несколько ролей, а потом перейдете по адресу /RoleAdmin
0
|
![]() 4624 / 2640 / 727
Регистрация: 02.08.2011
Сообщений: 7,086
|
||||||
04.11.2023, 21:43 | ||||||
Да, проблема воспроизведена. ТегХелпер коряво реализован - каждое его упоминание делает запрос в таблицу пользователей.
Костыльное решение - писать список пользователей один раз в статическую переменную (на момент генерации странички). По завершению - обнулять. Рекомендую подумать над тем, как это можно реализовать по-другому, и нужен ли здесь вообще этот хелпер.
Вот этот _users = null - тут я поторопился, я бы занулял это явно как-то через статику после завершения генерации, либо просто бы добавил InMemoryCache<string[]> который бы был полем хелпера и который бы хранил список пользователей по 2-3 минуты, условно.
1
|
0 / 0 / 0
Регистрация: 30.07.2020
Сообщений: 27
|
||
04.11.2023, 21:46 [ТС] | ||
0
|
04.11.2023, 21:46 | |
Помогаю со студенческими работами здесь
20
Перейти с asp.net identity на core identity
Asp.net core identity
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Реализация многопоточных сетевых серверов на Python
py-thonny 16.05.2025
Когда сталкиваешься с необходимостью писать высоконагруженные сетевые сервисы, выбор технологии имеет критическое значение. Python, со своей элегантностью и высоким уровнем абстракции, может. . .
|
C# и IoT: разработка Edge приложений с .NET и Azure IoT
UnmanagedCoder 16.05.2025
Мир меняется прямо на наших глазах, и интернет вещей (IoT) — один из главных катализаторов этих перемен. Если всего десять лет назад концепция "умных" устройств вызывала скептические улыбки, то. . .
|
Гибридные квантово-классические вычисления: Примеры оптимизации
EggHead 16.05.2025
Гибридные квантово-классические вычисления — это настоящий прорыв в подходах к решению сложнейших вычислительных задач. Представьте себе союз двух разных миров: классические компьютеры, с их. . .
|
Использование вебсокетов в приложениях Java с Netty
Javaican 16.05.2025
HTTP, краеугольный камень интернета, изначально был спроектирован для передачи гипертекста с минимальной интерактивностью. Его главный недостаток в контексте современных приложений — это. . .
|
Реализация операторов Kubernetes
Mr. Docker 16.05.2025
Концепция операторов Kubernetes зародилась в недрах компании CoreOS (позже купленной Red Hat), когда команда инженеров искала способ автоматизировать управление распределёнными базами данных в. . .
|
Отражение в C# и динамическое управление типами
stackOverflow 16.05.2025
Reflection API в . NET — это набор классов и интерфейсов в пространстве имён System. Reflection, который позволяет исследовать и манипулировать типами, методами, свойствами и другими элементами. . .
|
Настройка гиперпараметров с помощью Grid Search и Random Search в Python
AI_Generated 15.05.2025
В машинном обучении существует фундаментальное разделение между параметрами и гиперпараметрами моделей. Если параметры – это те величины, которые алгоритм "изучает" непосредственно из данных (веса. . .
|
Сериализация и десериализация данных на Python
py-thonny 15.05.2025
Сериализация — это своего рода "замораживание" объектов. Вы берёте живой, динамический объект из памяти и превращаете его в статичную строку или поток байтов. А десериализация выполняет обратный. . .
|
Чем асинхронная логика (схемотехника) лучше тактируемой, как я думаю, что помимо энергоэффективности - ещё и безопасность.
Hrethgir 14.05.2025
Помимо огромного плюса в энергоэффективности, асинхронная логика - тотальный контроль над каждым совершённым тактом, а значит - безусловная безопасность, где безконтрольно не совершится ни одного. . .
|
Многопоточные приложения на C++
bytestream 14.05.2025
C++ всегда был языком, тесно работающим с железом, и потому особеннно эффективным для многопоточного программирования. Стандарт C++11 произвёл революцию, добавив в язык нативную поддержку потоков,. . .
|