Как определить полную страницу Обновить / Перезагрузить в Blazor - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь обнаружить ссылку refre sh в Blazor, чтобы до того, как произойдет refre sh, я сохраняю некоторые данные в локальном хранилище, я пытался удалить, но службы, которые я получаю Данные для сохранения, не являются доступны на этом этапе. Я также попробовал JavaScript window.onbeforeunload и вызвал метод C#, когда это происходит следующим образом:

public static class SessionSaver
{
    [JSInvokable]
    public static Task SaveServicesToSession()
    {
        ViewDataService viewData = (ViewDataService)GetMeSomeServiceLocator.Instance.GetService(typeof(ViewDataService));           
        ProtectedBrowserStorage protectedBrowserStorage = (ProtectedBrowserStorage)GetMeSomeServiceLocator.Instance.GetService(typeof(ProtectedSessionStorage));
        protectedBrowserStorage.SetAsync("ViewData", viewData);
        protectedBrowserStorage.SetAsync("AuthModel", viewData.AuthModel);            
        return Task.FromResult("Success.");
    }
}

Javascript:

 window.onbeforeunload  = () => {
        DotNet.invokeMethodAsync('BlazorStore9', 'SaveServicesToSession')
            .then(message => { console.log(message); });
        }

Startup.cs: вложенный класс:

 public static class GetMeSomeServiceLocator
    {
        public static IServiceProvider Instance { get; set; }
    }

и в методе конфигурации:

GetMeSomeServiceLocator.Instance = app.ApplicationServices;

JsInvokable вызывается при перезагрузке страницы, но я получаю ошибку:

Система. InvalidOperationException: «Не удается разрешить определенную службу« BlazorStore9.Services.ViewDataService »от поставщика root.

Можно ли что-нибудь сделать, чтобы решить эту проблему?

...