Странный сбой веб-приложения Blazor при обработке локального хранилища - PullRequest
0 голосов
/ 22 декабря 2019

Я использую Server Side Blazor и у меня странная ошибка, причина которой я не получаю прямо сейчас ...

Ошибка возникает в этом методе:

    async Task UpdateBasketAtLocalStorage(BasketAnimationType animationType)
    {
        try
        {
            await LocalStorage.SetItemAsync("sushikaoru.Basket", Basket);

            AppState.AnimationHandler(animationType);

            StateHasChanged();
        }
        catch (Exception ex)
        {
            try
            {
                await LocalStorage.RemoveItemAsync("sushikaoru.Basket");
            }
            catch (Exception ex1)
            {
                await LocalStorage.ClearAsync();
                My.Log.Error(ex1);
            }
            My.Log.Error(ex);
        }
    } 

Трассировка стека видна на следующем изображении (https://ibb.co/dpBg0kN).

Вышеприведенный метод вызывается обработкой событий и инициализируется здесь:

    async Task InitBasket()
    {
        BasketState basket = null;

        try
        {
            basket = await LocalStorage.GetItemAsync<BasketState>("sushikaoru.Basket") ?? new BasketState();
        }
        catch (Exception)
        {
            basket = new BasketState();
        }

        Basket = basket;
        StateHasChanged();

        Basket.OnBasketChanged -= new Action<BasketAnimationType>(async (e) => await UpdateBasketAtLocalStorage(e));
        Basket.OnBasketChanged += new Action<BasketAnimationType>(async (e) => await UpdateBasketAtLocalStorage(e));
    }

Вот OnAfterRenderAsync, инициирующий загрузку корзинычерез локальное хранилище.

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        try
        {
            await InitBasket();
            await JS.InvokeAsync<object>("scrollFunction");

            if (firstRender)
            {
                await CheckOpeningTime();
            }                
        }
        catch (Exception ex)
        {
            My.Log.Error(ex);
        }
    }

Я думаю, что вся структура плохая и должна быть оптимизирована, но я не знаю, какая проблема вызывает затруднения. Надеюсь получить полезную подсказку, чтобы это исправить!

Thx!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...