Как перенести данные сеанса из SSR в интерактивный режим в Blazor?C#

Место общения программистов C#
Ответить
Anonymous
 Как перенести данные сеанса из SSR в интерактивный режим в Blazor?

Сообщение Anonymous »

Все!!
Я студент, который только начал изучать Blazor (.NET 8/10), и я совершенно не понимаю, как правильно перенести данные сеанса из SSR (серверный рендеринг) в режим интерактивного сервера.
Моя задача проста: у меня есть собственные данные сеанса (такие как SessionId, токены, UserId), которые загружаются в промежуточное программное обеспечение и хранятся в HttpContext.Items (все это, конечно, для простоты упаковано в класс). Мне нужно, чтобы эти данные были доступны в интерактивных компонентах. Microsoft говорит, что лучше не использовать HttpContext в интерактивных частях, но не ясно, как это сделать правильно.
Что я пробовал:
Оболочка SessionProvider: я создал компонент с InteractiveServer и ChildContent, чтобы обернуть все.
Результат: ошибка сериализации, RenderFragment не передается.
Инициализация в промежуточном программном обеспечении: I пытался заполнить службу ISessionKeyManager в промежуточном программном обеспечении.
Результат: в Interactive создается новая область, и данные теряются.
Интерактивный макет: я помещаю InteractiveServer в MainLayout.
Результат: та же ошибка с сериализацией тела.
PersistentState на страницах: добавлено [PersistentState] непосредственно на такие страницы, как Настройки.
Результат: Работает, но код везде повторяется. Пока самое крутое решение, попробовал немного поковыряться, но все равно пришлось копировать и вставлять из документации Microsoft, по-другому почему-то не получилось, но суть не в этом. Основная проблема здесь в том, что код приходится копировать на каждую страницу, а хотелось бы иметь общую точку входа.
CircuitHandler: читал статьи, где он используется для передачи из HttpContext.
Результат: еще не пробовал, но выглядит немного грубовато, не правда ли?
Столько способов, но какой из них правильный? Я прочитал об этом и понял, что PersistentComponentState является официальным от Microsoft, но мне все же хотелось бы услышать некоторые внешние мнения.
Какой подход Microsoft рекомендует для пользовательского сеанса с AuthStateProvider?
Когда мне следует использовать PersistentComponentState, а когда — CircuitHandler?
Правильно ли, что PersistentComponentState является основным, и если нет, тогда что?
Как организовать код, чтобы не копировать инициализацию на каждую страницу?
Стоит ли бороться с SSR, или проще просто отключить и покончить с этим?
Тема слишком общая, не уверен, что здесь нужны примеры кода и тому подобное, вопрос все-таки больше теоретический.
Пожалуйста, помогите советом или ссылки! 🙏

Подробнее здесь: https://stackoverflow.com/questions/798 ... -in-blazor
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»