Я не вижу никаких запросов POST при запуске моего серверного приложения Blazor

#post #blazor #fiddler

#Публикация #blazor #скрипач

Вопрос:

Я запускаю серверное приложение blazor, которое было развернуто в IIS. На сайте есть веб-служба REST в качестве серверной части. Код выглядит примерно так:

 <EditForm Model="@boundObject" OnValidSubmit="HandleValidSubmit">
    <td>
        <input type="checkbox" @bind="boundbject.HasCar" />
    </td>
    <button type="submit">Submit</button>
</EditForm>

@code {

    private void HandleValidSubmit(object handler)
    {
        if(boundObject.HasCar)
        {
            webService.WriteHasCar(boundObject.objectID,true)   
        }   
    }

}
  

Это работает просто отлично, но, глядя на сетевой трафик в Fiddler, когда я отправляю этот запрос, я вижу, что запрос на ИСПРАВЛЕНИЕ отправляется на веб-сервис, который выполняет вызов веб-службы, но я не вижу запроса POST, когда я нажимаю кнопку отправки. Чего мне здесь не хватает? Трассировка скрипача не видит ее или мой код не генерирует POST-запрос? И если это не так, как значение флажка попадает на сервер?

Комментарии:

1. Вы отправляете исправление и ожидаете, что это будет post? POST, PUT, PATCH, GET, DELETE — все разные. ИСПРАВЛЕНИЕ в наши дни не очень распространено, но все еще поддерживается.

2. Исправление происходит в веб-службе line. WriteHasCar, когда это веб-приложение переходит на серверную веб-службу. Я спрашиваю, почему я не вижу запроса post при нажатии отправки. Я вижу трафик между моим веб-приложением и веб-сервисом. Трафик, который я не вижу, — это запрос post между браузером и этим веб-приложением.

3. Если он отправляет ИСПРАВЛЕНИЕ, вашему контроллеру нужен метод ИСПРАВЛЕНИЯ. Например, используя атрибут [HttpPatch(«{id: int}»)] .

4. Я думаю, вы зациклились на ИСПРАВЛЕНИИ. ПАТЧ в порядке. Я спрашиваю, почему я не вижу запроса POST при отправке формы в приложении blazor server.

Ответ №1:

Вы не можете увидеть запрос Post, потому что запрос post не выполняется. Ваша форма не отправлена. Традиционный запрос post не возникает, хотя вы используете кнопку отправки. Действие отправки перехватывается Blazor и отменяется, поскольку это приложение SPA с четко определенными границами пространства. Обычно вы не выходите за эти границы, и если вы это делаете, например, переходите на внешнюю страницу входа, ваш SPA больше не существует. Когда вы перенаправляетесь обратно, оно восстанавливается…

Серверные приложения Blazor не используют протокол HTTP, а скорее SignalR. Все коммуникации между клиентской частью (браузером) и серверной частью серверного приложения Blazor выполняются через SignalR.

Обратите внимание, что первоначальный запрос к вашему приложению — это запрос HTTP get. Это единственный раз, когда используется HTTP, а не SignaR

Комментарии:

1. Спасибо, энет, это тот ответ, который я искал. Я подумал, что это, вероятно, что-то фундаментальное для Blazor. Можете ли вы порекомендовать какие-либо сведения о том, что такое SignalR и как Blazor работает с ним?

2. @yellephen Согласно документации SignalR будет использовать WebSockets, когда он будет доступен. Поэтому прокси с поддержкой WebSocket должен работать. Согласно документации Fiddler ) Должны поддерживаться WebSockets (на данный момент не могу найти его в последней версии Fiddler).