首页 > 解决方案 > Blazor WebAssembly App 无法调用 HTTP PATCH WEB API 方法

问题描述

我在 .NET 5 中创建了一个 Blazor WebAssembly 应用程序。通过这个应用程序,我正在调用 web api 方法。所有方法都被成功调用,除了一个是 HTTP PATCH 方法,我收到以下错误消息。

CORS 策略已阻止从源“https://localhost:44366”获取“http://localhost:8888/api/Reservation/4”的访问权限:Access-Control-Allow-Methods 不允许方法补丁在预检响应中。

图像显示错误: 在此处输入图像描述

当我从 ASP.NET Core 3.1 MVC 中构建的不同应用程序调用相同的 HTTP Patch 方法时,完全没有问题。我还从 Blazor Server (.NET 5) 中内置的另一个应用程序调用了相同的 HTTP Patch 方法,没有问题。

API 已经集成了 CORS,这就是调用其他方法的原因。但不是 HTTP 协议之一。

我调用 HTTP 协议的代码很简单,如下所示:

using (var httpClient = new HttpClient())
{
    var request = new HttpRequestMessage
    {
        RequestUri = new Uri("http://localhost:8888/api/Reservation/" + Id),
        Method = new HttpMethod("Patch"),
        Content = new StringContent("[{ \"op\":\"replace\", \"path\":\"Name\", \"value\":\"" + ReservationData.Name + "\"},{ \"op\":\"replace\", \"path\":\"StartLocation\", \"value\":\"" + ReservationData.StartLocation + "\"}]", Encoding.UTF8, "application/json")
    };

    var response = await httpClient.SendAsync(request);
}

为什么会出现问题?

标签: blazorblazor-webassembly

解决方案


推荐阅读