Почему обработчик страницы Razor (OnX) вызывается дважды в отладочной / визуальной студии? - PullRequest
0 голосов
/ 11 марта 2019

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

Например:

Любая страница в модели проекта и любой тип обработчика (get / post):

    public void OnGet()
    {
        _logger.LogTrace("Main index page get");
    }

записи журнала:

2019-03-11 10:11:55.9120||TRACE|*****.Pages.IndexModel|Main index page get |url: https://localhost/|action: 
2019-03-11 10:11:56.7514||TRACE|*****.Pages.IndexModel|Main index page get |url: https://localhost/|action: 

И с точкой останова она дважды достигает точки останова, сетевой журнал инструментов разработчика браузера показывает один запрос.Все браузеры провоцируют одно и то же поведение.

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

Любые идеи?

PS: Я перезапустил VS на своей рабочей станции и перезапустил его, обыскал в случае, если несколько процессов слушаютя мог придумать что-нибудь еще неопределенно связанное - безрезультатно.

1 Ответ

0 голосов
/ 11 марта 2019

Это не проблема ни с одним из фреймворков.Моему пользовательскому промежуточному программному обеспечению не удалось прервать обработку конвейера при определенных условиях.Я отредактировал промежуточное программное обеспечение, чтобы прервать его обработку, если мы находимся в среде разработки (потому что это раздражало), но мне это не удалось.

По сути, я сказал:

public async Task InvokeAsync(...)
{
    if (env.IsDevelopment())
    {
         // Do stuff to make the rest of the work of this MW irrelevant
         await _next(context);
    }

    // Rest of middleware including another await _next(context)
}

Ясно, что это глупоошибка.Урок для меня / всего: убедитесь, что ваше промежуточное ПО отлично работает.

...