blazor - 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);
}
为什么会出现问题?
解决方案
推荐阅读
- maven - Gradle 构建失败“com.google.common.util.concurrent.ExecutionError:java.lang.NoClassDefFoundError:org/gradle/api/internal/java/JavaLibrary”
- architecture - 清洁架构边界
- ipfs - 如何在捆绑中添加轨道数据库?
- c - Linux C/C++ 应用程序部署
- sqlite - 如何获取查询中一行的最终长度?
- java - 如何在 Selenium chrome webdriver 中获取 iframe cookie
- pandas - 通过分隔符','将数据框列分成多列:expand = True,n =-1
- java - 如何使用 ExecutorService 批量运行任务
- php - php+symfony - phpunit 测试 - 无法实例化接口错误
- python - 当代码在我的 python idle 中运行时,Google Kickstart 显示 RE