Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
I';当我运行Blazor服务器应用程序时,我没有看到任何POST请求_Post_Blazor_Fiddler - Fatal编程技术网

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

I';当我运行Blazor服务器应用程序时,我没有看到任何POST请求,post,blazor,fiddler,Post,Blazor,Fiddler,我正在运行已部署到IIS的blazor服务器应用程序。该站点有一个RESTWeb服务作为其后端。代码如下所示: <EditForm Model="@boundObject" OnValidSubmit="HandleValidSubmit"> <td> <input type="checkbox" @bind="boundbject.HasCar" />

我正在运行已部署到IIS的blazor服务器应用程序。该站点有一个RESTWeb服务作为其后端。代码如下所示:

<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)   
        }   
    }

}

提交
@代码{
私有void HandleValidSubmit(对象处理程序)
{
if(boundObject.HasCar)
{
webService.WriteHasCar(boundObject.objectID,true)
}   
}
}

它工作得很好,但是当我提交这个请求时,查看Fiddler中的网络流量,我可以看到补丁请求被发送到web服务,而调用web服务就是这样做的,但是当我点击提交按钮时,我没有看到POST请求。我错过了什么?是Fiddler跟踪无法看到它,还是我的代码不会生成POST请求?如果没有,复选框的值如何到达服务器?

您无法看到Post请求,因为没有发出Post请求。您的表格未提交。虽然您使用的是提交按钮,但不会出现传统的post请求。 提交操作被Blazor截获并取消,因为这是一个具有明确空间边界的SPA应用程序。您通常不会导航到这些边界之外,如果您导航到外部登录页面,您的SPA将不再存在。当你重新定向回来时,它会复活

服务器Blazor应用程序不使用HTTP协议,而是使用信号器。服务器Blazor应用程序的客户端(浏览器)和服务器端之间的所有通信都是通过Signal执行的


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

您正在发送一个补丁,并希望它是一个帖子?POST、PUT、PATCH、GET、DELETE都是不同的。现在补丁不太常见,但仍然受支持。当此web应用推送到后端web服务时,补丁出现在webService.WriteHasCar行。我在问为什么我点击submit时没有看到post请求。我看到我的web应用程序和web服务之间的流量。我没有看到的流量是浏览器和此web应用之间的post请求。如果它发送修补程序,则控制器需要修补程序方法。例如,使用[HttpPatch(“{id:int}”)]属性。我认为您正在挂断补丁。这个补丁很好。我想问的是,为什么我在blazor服务器应用程序上提交表单时没有看到POST请求。谢谢你,这就是我想要的答案。我想这可能是Blazor的基础。你能推荐一些关于什么是信号器以及Blazor如何使用它的阅读资料吗?@yellephen根据文档,信号器在可用时将使用WebSocket。因此,具有WebSocket支持的代理应该可以工作。根据《技术规范》,应支持WebSocket(目前在最新的Fiddler版本中找不到)。