当我 运行 我的 Blazor 服务器应用程序时,我没有看到任何 POST 请求

I'm not seeing any POST requests when I run my Blazor Server App

我是 运行 已部署到 IIS 的 Blazor 服务器应用程序。该站点有一个 REST Web 服务作为后端。代码是这样的:

<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 中的网络流量,我可以看到 PATCH 请求转到 webService 调用 web 服务,但我没有看到 POST 当我点击提交按钮时请求。我在这里错过了什么? Fiddler 跟踪是否看不到它,或者我的代码不会生成 POST 请求?如果没有,复选框的值如何到达服务器?

您看不到 Post 请求,因为没有 post 请求。您的表格未提交。尽管您使用的是提交按钮,但不会出现传统的 post 请求。 提交操作被 Blazor 拦截并取消,因为这是一个具有 well-defined space 边界的 SPA 应用程序。您通常不会导航到这些边界之外,如果您这样做了,例如,导航到外部登录页面,您的 SPA 将不再存在。当您被重定向回来时,它会复活...

Server Blazor Apps 不使用 HTTP 协议,而是使用 SignalR。 Server Blazor App client-side(浏览器)和 server-side 之间的所有通信都是通过 SignalR 执行的。

请注意,对您应用程序的初始请求是 HTTP get 请求。这是唯一一次使用 HTTP 而不是 SignaR