Документация blazor по управлению состоянием не особенно полезна в этом отношении, поскольку в ней содержатся лишь расплывчатые ссылки на серверное хранилище без каких-либо содержательные ссылки на примеры.
Основываясь на своих исследованиях, я пришел к выводу, что мне нужно будет фиксировать состояние пользователя где-то вне моего приложения. Все проведенные мною исследования указывали на использование распределенного кэша токенов.
- Ссылка 1
Ссылка 2 - Ссылка 3
- Добавлена опция распределенного кэша токенов после определения моих данных Azure B2C при регистрации службы.
Код: Выделить всё
.AddMicrosoftIdentityWebApp(options => configuration.Bind("AzureAdB2C", options))
.EnableTokenAcquisitionToCallDownstreamApi(
new List() { })
.AddDistributedTokenCaches()
- Загрузил сервер MySQL
- Установлен Microsoft.Extensions.Caching.SqlServer согласно документации
- Создана соответствующая структура таблицы dotnet sql-cache create "< ConnectionString>" сеанс dbo согласно документы. Я подтвердил, что структуры таблиц созданы в соответствии с документацией.
- Использовал метод .AddSession() для регистрации. соответствующие службы
- Определил кэш моего сервера sql следующим образом
это идеально соответствует тому, что я вижу в схеме БД и таблице.Код: Выделить всё
.AddDistributedSqlServerCache(options => { options.ConnectionString = "" options.SchemaName = "dbo"; options.TableName = "Session"; })
- Определено app.UseSession (); непосредственно после app.UseRouting() в моем Program.cs
При входе пользователя в таблицу ничего не записывается. - Я не вижу в blazor логов, указывающих на то, что служба не зарегистрирована или соединение с базой данных не может быть установлено.
Вывод
Я упускаю что-то очевидное? Есть ли какой-нибудь способ добиться сохранения состояния посредством перезапуска приложения?
Я также ознакомился с примерами удостоверений Microsoft и не видел примера, использующего этот подход.
Многие спасибо за любую помощь!
Подробнее здесь: https://stackoverflow.com/questions/790 ... uted-cache