Angular Http post 请求无法到达 C# 端点

Angular Http post request can't reach C# endpoint

我写了一个 Http-Post 请求来更新我的 C#-Backend 中的数据。我不明白为什么它不起作用,因为我项目中的所有其他 http 请求都有效。

Angular服务代码:

private RestApiURL = 'https://localhost:44360/api/categories/';

public addCategory(category: Category) {
    return this.httpClient.post<Category>(this.RestApiURL + "addCategory", category);
}

C# 后端代码:

[ApiController]
[Route("api/[controller]/")]
public class CategoriesController : Controller
{

    ... other code

    [HttpPost]
    [Route("addCategory")]
    public Category AddCategory(Category category)
    {
        var cat = new Category()
            {
                Id = new Guid(),
                Representation = category.Representation,
                RoomCount = category.RoomCount
            };
        _context.Categories.Add(cat);

        _context.SaveChanges();
        return null;
    }
}

你需要像这样在“addCategory”后面加一个“/”

this.RestApiURL + "addCategory/", category);

查看文档。在此处提供 Angular-App:https://angular.io/guide/build#proxying-to-a-backend-server

您需要在 Angular 项目的根目录中创建一个 proxy.conf.json。 proxy.conf.json 应如下所示:

{
    {
    "/api": {
        "target": "https://localhost:44360/api",
        "pathRewrite": {"^/api": ""},
    }
}

在您的服务中,您需要将当前代码更改为:

return this.httpClient.post<Category>("/api/categories/addCategory",category);

现在您需要为您的 angular-项目提供服务:ng serve --proxy-config proxy.conf.json.
Angular 现在会将您的请求代理到您的后端。

这里是您收到此错误的原因的进一步阅读 https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors