Вызов Blazor Custom AuthenticationStateAsyn c после сбоя запуска из-за JavaScript - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть программа на стороне сервера Blazor, в которой я реализовал собственную аутентификацию с чтением токена из JavaScript.

Работает нормально - за исключением запуска, когда чтение не удается (конечно, потому что для рендеринга на стороне сервера требуется OnAfterRender для JavaScript вызова).

Но здесь код выполняется самим Blazor и выдает исключение.

Как это исправить, чтобы этот вызов не выполнялся или не выполнялся другое время выполнения (после рендеринга)? enter image description here

Thx

1 Ответ

1 голос
/ 08 февраля 2020

JSInterop может быть доступен только после рендеринга вашего приложения, но не раньше. Чтобы решить эту проблему, вам нужно вызвать TokenStorageService.GetToken из методов OnAfterRender или OnAfterRenderAsyn ваших компонентов. Вот фрагмент кода для демонстрации этого:

@page "/mypage"

@inject TokenStorageService tokenService 

@code{

  protected override async Task OnAfterRenderAsyn (bool firstRender)
  {
     // Ensure that the app has been rendered, and it is the first 
     // render. Note also that this code is only executed once. And it
     // won't be executed on recurring calls to the OnAfterRenderAsyn.
     // This makes it an ideal place to initialize JavaScript objects.
     if(firstRender)
     {
         var token = await TokenStorageService.GetToken();
     }
 }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...